考虑以下四个类:
export class Car {
}
export class Mercedes extends Car {
}
export class Animal<T extends Car> {
car: T;
}
export class Dog extends Animal<Mercedes> {
}
另一个类保存了对这两个类的引用:
export class MyClass {
constructor(animalClass: typeof Animal) {}
}
现在,以下内容无效:
let x = new MyClass(Dog);
我该如何做到这一点?
答案 0 :(得分:1)
为了实现这一目标,您需要按如下方式定义MyClass
:
export class MyClass<T extends Car> {
constructor(animalClass: new() => Animal<T>) {}
}
此处MyClass
是泛型类型,其构造函数采用可构造该泛型类型的Animal
的内容。
Using Class Types in Generics下的文档中介绍了这一点。