我在使用最新的TypeScript 1.5编译器与Map
和for..of
时遇到问题。例如:
var map: Map<string, string> = new Map<string, string>();
map.set("A", "one");
map.set("B", "two");
map.set("C", "three");
for(let [key, value] of map) {
console.log(key, value);
}
根据this,TypeScript 1.5支持解构和for..of所以我真的不明白为什么这不起作用,但它输出无效的ES5:
for (var _i = 0, _a = map; _i < _a.length; _i++) {
// ^^^^^^^^^
// A Map doesn't have a length, so this block never executes
var _b = _a[_i], key = _b[0], value = _b[1];
console.log(key, value);
}
我使用map.forEach((value, key) => { ... });
解决了这个问题,但它不如for..of
那么好。
这是1.5版本的限制吗?我不希望它在不受支持的情况下将Map
转换为ES5吗?
答案 0 :(得分:1)
TypeScript支持的目标为ES3 / 5的语法for of
非常有限。 Iterables需要目标ES6。
这是1.5版本的限制吗?
是:
这适用于数组和字符串。 ES3 / ES5 (Source)
不支持其他迭代