不能在打字稿图中使用数字作为键?

时间:2019-10-07 09:12:21

标签: typescript dictionary

在课堂上:

private stuff: Map<number, string> = new Map();

...

this.stuff[aNumber] = "hello";

给出此错误:

  

元素隐式具有any类型,因为类型number的表达式不能用于索引类型Map<number, string>

     

在类型number上找不到参数类型为Map<number, string>的索引签名

这对我来说毫无意义。为什么Map<number, string>不声明参数类型为number的索引签名?

1 个答案:

答案 0 :(得分:1)

这是因为Map没有使用索引器-它使用的是get / set方法。

let foo: Map<number, string> = new Map();
foo.set(2, "something");
let some = foo.get(2);

您可以做的是使用number: string自定义地图对象

let bar: { [key: number]: string } = {};
bar[1] = "some";
bar["sl"] = "some" // error

请参阅playground