在课堂上:
private stuff: Map<number, string> = new Map();
...
this.stuff[aNumber] = "hello";
给出此错误:
元素隐式具有
any
类型,因为类型number
的表达式不能用于索引类型Map<number, string>
。在类型
number
上找不到参数类型为Map<number, string>
的索引签名
这对我来说毫无意义。为什么Map<number, string>
不声明参数类型为number
的索引签名?
答案 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。