簡體   English   中英

TypeScript map 與通用抽象 object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM