ES2015 中的 IterableIterator - 它是什么?

mel*_*nin 4 typescript ecmascript-6

当我实现接口数组时,有一些方法返回一个 IterableIterator。IterableIterator 扩展自 Iterator,我可以很好地理解它并且对我来说很有意义。

interface IterableIterator<T> extends Iterator<T> {
    [Symbol.iterator](): IterableIterator<T>;
}
Run Code Online (Sandbox Code Playgroud)

但我应该为 Symbol.iterator 实现什么。这也返回一个IterableIterator(递归?)我不明白IterableIterator的概念。如果有人能回应那就太好了。或者可以给我一个描述这一点的来源。

Tha*_*hai 8

Iterator将对象变成通常很有用Iterable,这样它们就可以:

\n
    \n
  • 被用在一个for..of在循环
  • \n
  • 被分散到一个数组中
  • \n
  • 分散到参数列表中
  • \n
  • 用于接受可迭代的 API,例如\n
      \n
    • Array.from
    • \n
    • new Set
    • \n
    • new Map
    • \n
    \n
  • \n
\n

如果一个Iterator对象不是Iterable,那么它们不能以上述方式使用。迭代它的唯一方法是重复调用该.next()方法。这很不方便。因此,大多数Iterator由 ECMAScript API 生成的对象也是Iterable.

\n

要制作Iterator Iterable[Symbol.iterator]方法应该return this

\n

欲了解更多信息,请参阅:

\n\n