扩展 TypeScript Map 以限制数据类型

swo*_*nep 4 javascript oop inheritance typescript

我试图通过限制它接受的参数类型来创建一个FooMap扩展默认 TypeScriptMap类的类。我扩展这个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;
}
Run Code Online (Sandbox Code Playgroud)

现在,FooMap类将是:

export class FooMap extends Map{
    constructor(otherMap : Map<number,Foo>){
        super(otherMap);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为super()只接受一个可迭代对象,因此必须有更好的方法来扩展Map该类。

zer*_*kms 6

您还需要使您的类扩展完全实例化的泛型Map

export class FooMap extends Map<number, Foo> {
Run Code Online (Sandbox Code Playgroud)

但要使其工作,您应该定位es6(请参阅https://github.com/Microsoft/TypeScript/issues/10853