我试图创建一个类FooMap,通过限制它接受的参数类型来扩展默认的TypeScript Map类。我扩展Map类的原因是因为我想为该类编写将要从不同文件访问的方法。

默认的Map类为Map<any,any>,但是FooMap类类似于使用内置Map<number,Foo>类型和用户定义的number类型的FooFooMap仅接受这些键/值对。

我对此的尝试是通过在构造函数中传递一个映射,但是我觉得有更好的方法可以做到这一点。

// 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)

09-13 00:46