【发布时间】:2019-02-20 14:05:16
【问题描述】:
我正在寻找一种方法来以通用方式从以下代码中表达[B, C] 的类型。如果我像现在一样悬停types,我会得到const types: (typeof B | typeof C)[],这有点冗长,并且随着新项目的添加可能会变得很长。
abstract class A {
static staticF<T extends A>(this: new () => T): string {
return 'A'
}
}
class B extends A {
static bProp = 1
}
class C extends A {
static cProp = 1
static staticF<T extends A>(this: new () => T): string {
return 'B'
}
}
const types = [B, C]
types
.map(t => t.staticF())
.forEach(x => console.log(x))
我尝试使用const types: typeof A[],但出现以下错误:
“typeof A”类型的“this”上下文不能分配给“new () => A”类型的方法“this”。 无法将抽象构造函数类型分配给非抽象构造函数类型。
我也试过const types: typeof extends A[],但 TS 认为我喝醉了。
如何从共享同一个父类的类中表达多个类构造函数的类型?
另外,typeof A、new () => A 和 {new (): A} 有什么区别?
【问题讨论】:
标签: typescript generics inheritance