如何声明 class
类型,以确保对象是通用类的构造函数?
在下面的示例中,我想知道应该给 AnimalClass
哪个类型,以便它可以是 Penguin
或 Lion
:
class Animal {
constructor() {
console.log("Animal");
}
}
class Penguin extends Animal {
constructor() {
super();
console.log("Penguin");
}
}
class Lion extends Animal {
constructor() {
super();
console.log("Lion");
}
}
class Zoo {
AnimalClass: class // AnimalClass could be 'Lion' or 'Penguin'
constructor(AnimalClass: class) {
this.AnimalClass = AnimalClass
let Hector = new AnimalClass();
}
}
当然 class
类型不起作用,反正也太笼统了。
原文由 arthur.sw 发布,翻译遵循 CC BY-SA 4.0 许可协议
当最初提出问题时,我不确定这在 TypeScript 中是否可行,但我首选的解决方案是使用 _泛型_:
这种方式变量
penguin
和lion
推断具体类型Penguin
或Lion