我试图创建一个类FooMap
,通过限制它接受的参数类型来扩展默认的TypeScript Map
类。我扩展Map
类的原因是因为我想为该类编写将要从不同文件访问的方法。
默认的Map类为Map<any,any>
,但是FooMap
类类似于使用内置Map<number,Foo>
类型和用户定义的number
类型的Foo
。 FooMap
仅接受这些键/值对。
我对此的尝试是通过在构造函数中传递一个映射,但是我觉得有更好的方法可以做到这一点。
// Say Foo class is defined as
export class Foo {
id: number;
name: string;
}
现在,
FooMap
类将是:export class FooMap extends Map{
constructor(otherMap : Map<number,Foo>){
super(otherMap);
}
}
但这是行不通的,因为
super()
仅接受一个可迭代对象,因此必须有更好的方法来扩展Map
类。 最佳答案
您还需要使您的类扩展一个完全实例化的通用Map
:
export class FooMap extends Map<number, Foo> {
但是要使其正常工作,您应该定位
es6
(请参阅https://github.com/Microsoft/TypeScript/issues/10853)