为什么Typescript Map不能像Indexable Types那样自动编译索引(& property-accessibleable)?

时间:2017-08-20 18:14:19

标签: typescript

所以,在下面的打字稿中代码可以工作:

interface CounterArray {
    [index: string]: number;
}

let myArray: CounterArray = {};
myArray["001"] = 0 
myArray["002"] = 0

console.log(myArray[0]) // should result 0

知道了。都好!但是,如果我的做法与地图类似。

const map = new Map<string, number>
map.set("001",0)
map.set("002",0)

console.log(map[0]) // Syntax error: Element implicitly has an 'any' type because type 'Map<number,string>' has no index signature.

我对此感到非常困惑,因为,来自Java / Kotlin / C#,默认情况下,Map应该可以按键索引。我认为,应该使用Map<key,value>优雅地完成这项工作。

此外,使用“上面的第一个代码块”,我可以执行以下操作:

console.log(myArray["001"]++) // Should results 1

虽然我不能用地图对应物做这样的事情

console.log(myArray.get("001")++) // Syntax error, Object is possibly undefined -> on editor level. So it's a syntax error. Not compile or other runtime error.

我认为这种行为很奇怪。或者可能是预期的?也许我知道的Map(来自Java / C#/ Kotlin)与typescript的Map不同?

感谢您的解释!

0 个答案:

没有答案