1
所以我對Typescript以及泛型都很陌生。我不確定是否發現了Typescript的錯誤/限制,或者我錯過了正確的模式來執行我想要的操作。泛型類,約束和繼承
我有一個Widget
泛型基類,它保存的值爲T
。例如,它可能是string
,number
,無論如何。
我想有一個Widget
子類,將舉行一個Array<T>
作爲它的值,例如string[]
,Date[]
等
示例代碼消費:
let w = new Widget<string>();
w.value = "abc";
let aw = new ArrayWidget<number[]>();
aw.value = [1, 2, 3];
最接近我來是這樣的:
class Widget<T> {
public value:T;
}
class ArrayWidget<U extends T[], T> extends Widget<U> {
setValue() {
let v = new Array<T>();
this.value = v; // error: Type 'T[]' is not assignable to type 'U'
}
}
let aw = new ArrayWidget<string[], string>();
aw.value = ["a", "b", "c"];
我該怎麼規格ify那ArrayWidget
的通用類實際上是一個<T>
的數組?目前我必須像這樣明確地投:
this.value = v as U;
而且一切都很開心(消費代碼按預期工作)。謝謝!