扩展TypeScript映射以限制数据类型

时间:2019-06-18 23:24:33

标签: javascript typescript oop inheritance

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

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

我试图通过在构造函数中传递一个映射来实现这一点,但是我觉得有更好的方法来实现这一点。

number

现在,Foo类为:

FooMap

但是这不起作用,因为// Say Foo class is defined as export class Foo { id: number; name: string; } 仅接受一个可迭代对象,因此必须有一种更好的方法来扩展FooMap类。

1 个答案:

答案 0 :(得分:2)

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

export class FooMap extends Map<number, Foo> {

但是要使其发挥作用,您应该定位es6(请参见https://github.com/Microsoft/TypeScript/issues/10853