typescript 迭代器 Playground 错误

标签 typescript iterator iteration

我有以下代码片段:

var iterator: IterableIterator<string> = iterBreadth(tree);
for(var item of iterator){
  log(item)
}

iterBreadth只是一个返回迭代器的生成器函数。 TypeScript 中的迭代器类型为 IterableIterator<T>哪里Tstring就我而言。

我的问题是 - 为什么 Playground 在 for..of 对我大喊大叫迭代器循环行:

enter image description here

为什么迭代器仅限于数组和字符串?


我在 official docs 找到了当针对 ES3 或 ES5 时,for..of 中仅允许数组循环。但这并不能解释字符串在 Playground 错误消息中的作用。


此外,我可以看到 typescript 很难转译 for..of 。下面的代码似乎是针对数组精确转译的,因为它只是迭代索引 (0, 1, 2),而不是调用 next:

var iterator = iterBreadth(tree);
for (var _i = 0, iterator_1 = iterator; _i < iterator_1.length; _i++) {
    var item = iterator_1[_i];
    log(item);
}

最佳答案

typescript 2.3 added support for generators and the Iterator protocol for ES3 and ES5 targets 。使用新的 --downlevelIteration 选项,您的示例编译时不会出现错误:

tsc --lib es6 --target es5 --downlevelIteration t.ts

--downlevelIteration 选项在 typescript Playground 中不可用。

关于 typescript 迭代器 Playground 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43899523/

相关文章:

r - 创建不同大小和长度的 lavaan 和 irt 模型排列

typescript - typescript 中抽象类中的静态工厂

Java:for 循环和迭代器

java - 意外的 IndexOutOfBoundsException

java - 如何迭代 SortedSet 以修改其中的项目

iterator - 共享借用的 Vec 上 iter() 和 into_iter() 的区别?

python - 嗨,我有一项赋值,可以使用lambda并在python中映射,从而将一个数字的所有数字相加

typescript - 为什么 TypeScript 在嵌套对象中不能推断泛型类型?

javascript - 函数不返回任何内容

javascript - typescript 找不到名称错误