15
如何聲明class
類型,以便確保該對象是一般類的構造函數?typecript中的類構造函數類型?
在下面的例子,我想知道我應該給這類型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
類型不工作,它會無論如何,這太籠統了。
我只是想補充一點,這種解決方案並沒有爲我工作,如果你想使用都不行一個構造函數,它接受非零數量的參數。讓我永遠弄清楚爲什麼這個例子可行,但我的代碼沒有。 我經過幾個小時的搜索後發現的東西是使用'AnimalClass:typeof Animal'。這將用於動態加載給定類的子類。 – pixelpax
@pixelpax你可以像這樣定義一個非零參數構造函數:'new(... args:any []):Animal' – Sammi
@Sammi,謝謝你,你的解決方案確實有意義。對我來說,使用'typeof Animal'來表示「Animal的任何子類的類型」工作得很好,並且在代碼中看起來是描述性的。 – pixelpax