1

我在将最新的 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);
}

据此 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?

4

1 回答 1

1

以 ES3/5 为目标的 TypeScript 支持的语法for of非常有限。可迭代对象需要目标 ES6。

这是 1.5 版本的限制吗?

是的:

这适用于数组和字符串。ES3/ES5 将不支持其他迭代(来源)

于 2015-04-24T14:28:20.507 回答