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