所以,在下面的打字稿中代码可以工作:
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
不同?
感谢您的解释!