首页 > 解决方案 > 为什么打字稿允许我使用数字作为字符串映射的索引值?

问题描述

我希望这会被打字稿报告为错误:

const map: { [key: string]: string } = {};
const value = map[1]; // 1 is not a string...

为什么打字稿不在这里抱怨?

标签: typescript

解决方案


在 javascript 中,对象的键始终是字符串,如果您传递一个数字,它将自动转换为字符串。

Let obj = {};
obj[3] = ‘something’;
console.log(Object.keys(obj));
// [‘3’]

如果您使用地图,您可以将键值严格键入为

let m = new Map<string, any>();
m.set(3, "1st three");
m.set("3", "2nd three");

推荐阅读