需求是这样的:
有一个定义好的 class Foo,函数 bar 会调用一次 Foo 的一个静态方法,然后返回 Foo。
那 bar 的返回类型应该怎么定义?
google 一通找到 ts 架构师的PR,完全看不懂。。。
现在的做法是从 so 复制粘贴来的:
type Constructor<T extends {} = {}> = new (...args: any[]) => T
但调用这个返回的类似乎只有Function
的原型方法比如 toString,之前 Foo 的静态方法都没了:
const _Foo = bar()
_Foo.init(config) // 编译器提示 TS2339:属性 init 在 Constructor 上不存在
怎样才能定义一个类型,保留这个类的静态方法?
求教神通的 v 友!
1
huanglexus 2020-03-10 14:38:09 +08:00
很简单,typeof
class Foo { static m1() { console.log('m1') } } function bar(): typeof Foo { Foo.m1() return Foo } |
2
px920906 OP @huanglexus 可以了!谢谢
|