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该类。
您还需要使您的类扩展完全实例化的泛型Map:
export class FooMap extends Map<number, Foo> {
Run Code Online (Sandbox Code Playgroud)
但要使其工作,您应该定位es6(请参阅https://github.com/Microsoft/TypeScript/issues/10853)