繁体   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