TypeScript - Iterators, Iterables & Async Iterators

Iterables

const nums = [1,2,3];
for (const n of nums) console.log(n);

Custom iterator

const range = {
  *[Symbol.iterator](){
    for (let i=0;i<3;i++) yield i;
  }
};

for (const n of range) {/* 0,1,2 */}

Async iterators

async function* stream() {
  yield 1; await new Promise(r=>setTimeout(r,10)); yield 2;
}

for await (const x of stream()) { /* 1 then 2 */ }