[英]TypeScript map with generic abstract object
我有幾個項目,它們都繼承自抽象項目。 object 應包含具有不同項目實現的 map。 使用我當前的代碼,我在 Object 中遇到以下錯誤:
TS2314:通用類型 'Item<'T'>' 需要 1 個類型參數
在 Java 中,這不是問題。 如何讓它在 TypeScript 中工作?
項目
abstract class Item<T> {
}
class Item1 extends Item<boolean> {
}
class Item2 extends Item<number> {
}
Object.ts
class Object {
private itemMap: Map<number, Item>;
}
嘗試這個:
class Object {
private itemMap: Map<number, Item1 | Item2>;
}
如果您計划添加擴展Item
的新類並支持Object
中的類,則可以使用Item<any>
。
它適用於存在派生Item
class 的所有泛型類型; 並且您無法使用尚未聲明派生 class 的泛型類型實例化對象:
class Object {
private itemMap: Map<number, Item<any>>;
public constructor() {
this.itemMap = new Map();
this.itemMap.set(1, new Item1()); // ok
this.itemMap.set(2, new Item2()); // ok
this.itemMap.set(3, new Item<string>()); // Error: Cannot create an instance of an abstract class.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.