求教, typescript 中函数返回一个 class 时类型如何定义?

2020-03-10 14:07:00 +08:00
 px920906

需求是这样的:

有一个定义好的 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 友!

1753 次点击
所在节点    TypeScript
2 条回复
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
}
px920906
2020-03-10 15:21:12 +08:00
@huanglexus 可以了!谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/651502

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX