打字稿"Not a constructor function type"转换后出错



我有以下TypeScript代码:

class ClassA {
field1: any;
}
const SomeClassAsA = diContainer.get('SomeClass') as ClassA;
class ClassB extends ClassA {} // works
class ClassB extends SomeClassAsA {} // error: Type ClassA is not a constructor function type

为什么 B 类可以用 A 类扩展,而不能用其他被转换为 A 类的对象扩展?需要扩展某个类。我怎样才能做到这一点?

我使用 TypeScript 1.5.3

const SomeClassAsA = diContainer.get('SomeClass') as typeof ClassA;
//                                                   ^ added

当您使用类作为类型时,您实际上是在键入该类的实例。 请记住,类是 javascript 中的真实对象,而不是没有原始 JavaScript 推论的interface

这是有道理的,因为它允许您编写:

const person: Person = new Person()

person显然是Person的实例,而不是类构造函数对象Person

因此,若要获取类本身的类型,请使用typeof运算符。

工作操场

最新更新