IterableIterator在ES2015-它是什么



当我实现接口数组时,有一些方法返回一个IterableIterator。IterableIterator从我能很好理解的Iterator扩展而来,对我来说很有意义

interface IterableIterator<T> extends Iterator<T> {
[Symbol.iterator](): IterableIterator<T>;
}

但是我应该为Symbol.iterator实现什么呢?这也会返回一个IterableIterator(递归?(我不理解IterableIterator的概念。如果能有人回应就太好了。或者可以给我一个描述这件事的来源。

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

  • 用于for..of循环
  • 排列成一个阵列
  • 展开到参数列表中
  • 在接受可迭代项的API中使用,如
    • Array.from
    • new Set
    • new Map

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

要制作IteratorIterable[Symbol.iterator]方法应为return this

有关更多信息,请参阅:

MDN上的"迭代协议"
  • 探索ES6中的"实现迭代",其中还谈到了"可迭代的迭代器">
  • 最新更新