【发布时间】:2017-10-09 12:26:15
【问题描述】:
我有以下代码 sn-p:
var iterator: IterableIterator<string> = iterBreadth(tree);
for(var item of iterator){
log(item)
}
iterBreadth 只是一个返回迭代器的生成器函数。 TypeScript 中的迭代器是 IterableIterator<T> 类型,在我的例子中,T 是 string。
我的问题是 - 为什么操场在 for..of 迭代器循环行对我大喊大叫:
?
为什么迭代器仅限于数组和字符串?
我在official docs 发现,当以 ES3 或 ES5 为目标时,for..of 循环中只允许使用数组。但这并不能解释操场错误消息中字符串的作用。
此外,我可以看到打字稿很难转译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);
}
【问题讨论】:
-
您需要定位
es6(或更高版本)才能做到这一点。但似乎你已经知道了,所以你到底在问什么?为什么需要定位es6? -
@NitzanTomer 不,问题是关于错误消息的。为什么显示
string类型?!我发现它具有误导性。
标签: typescript iterator iteration