在我的代码中遇到了一个奇怪的 bug,我无法想出一种方法使得使用元组作为键时可以从 Map 中进行常数时间查找。
希望这能说明问题,以下是我现在使用的解决方法:
hello.ts:
let map: Map<[number, number], number> = new Map<[number, number], number>()
.set([0, 0], 48);
console.log(map.get([0,0])); // prints undefined
console.log(map.get(String([0, 0]))); // compiler: error TS2345: Argument of type
// 'string' is not assignable to parameter of type '[number, number]'.
//the work-around:
map.forEach((value: number, key: [number, number]) => {
if(String(key) === String([0, 0])){
console.log(value); // prints 48
}
})
我使用以下工具进行编译(转换?):
tsc hello.ts -target es6
tsc版本为2.1.6
尝试了几种方法使Map.get()方法正常工作,但没有太大的成功。