我正在使用Typescript并启用了严格的空检查.当我尝试编译以下代码时,我得到错误"type'null'不能用作索引类型."
function buildInverseMap(source: Array<string | null>) {
var inverseMap: { [key: string]: number } = {};
for (let i = 0; i < source.length; i++) {
inverseMap[source[i]] = i;
}
}
Run Code Online (Sandbox Code Playgroud)
显然,逆映射不能将null作为键,因为类型约束不允许它.但是,如果我将inverseMap的类型更改为:
var inverseMap: { [key: string | null]: number } = {};
Run Code Online (Sandbox Code Playgroud)
我收到错误"索引签名参数类型必须是'字符串'或'数字'." 这很奇怪,因为在Javascript中使用null作为索引是合法的.例如,如果您在浏览器中运行以下代码:
var map = {};
map[null] = 3;
map[null];
Run Code Online (Sandbox Code Playgroud)
输出是3.有没有办法在Typescript中实现这一点,或者Typescript不够智能这样做?
typescript ×1