使用for..of with Map会生成无效的ES5

时间:2015-04-24 14:16:37

标签: typescript typescript1.5

我在使用最新的TypeScript 1.5编译器与Mapfor..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吗?

1 个答案:

答案 0 :(得分:1)

TypeScript支持的目标为ES3 / 5的语法for of非常有限。 Iterables需要目标ES6。

  

这是1.5版本的限制吗?

是:

  

这适用于数组和字符串。 ES3 / ES5 (Source)

不支持其他迭代