У меня возникла проблема с использованием последнего компилятора TypeScript 1.5 в сочетании с Map
и for..of
. Пример:Использование для .of с Map генерирует недопустимый ES5
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, машинопись 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);
}
I работал вокруг этого, используя map.forEach((value, key) => { ... });
, но это не так хорошо, как for..of
.
Является ли это ограничением выпуска 1.5? Ожидаю ли я, чтобы он переместил Map
в ES5, когда он не поддерживается?
Но, не пожалеете. [Код, созданный Babel для оператора 'for of', является уродливым из-за итераторов] (http://babeljs.io/repl/#?experimental=true&evaluate=false&loose=false&spec=false&playground=false&code=const%20arr%20% 3D% 20 [% 27a% 27% 2C% 20% 27b% 27]% 3B% 0Afor% 20% 28let% 20val% 20of% 20arr% 29% 0A% 20% 20console.log% 28val% 29% 3B% 0A) , – Paleo
Отлично, спасибо! Ссылки источника и Babel были очень полезны – CodingIntrigue