我有以下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
运算符。
工作操场