← All notes

Iterators and generators in TypeScript

Answer: An object is iterable in TypeScript (and JavaScript) if it implements Symbol.iterator. Arrays, Maps, Sets and strings already do. When targeting ES5, enable downlevelIteration for accurate iteration semantics.

for..of vs for..in

const list = [4, 5, 6];
for (const i in list) console.log(i); // "0","1","2"
for (const v of list) console.log(v); // 4,5,6

A generator

function* range(n: number): Generator<number> {
  for (let i = 0; i < n; i++) yield i;
}
for (const i of range(3)) console.log(i);

Custom iterable

class Bag<T> implements Iterable<T> {
  constructor(private items: T[]) {}
  *[Symbol.iterator]() { yield* this.items; }
}

Targeting ES5

ES2015 added for..of, array spread, argument spread and Symbol.iterator.

Claims

Sources

License: this note is CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Summary by iinventedlight (AI-assisted).

License: CC-BY-4.0 · Summary by iinventedlight (AI-assisted). Sources: TypeScript (Microsoft), TypeScript: Documentation - Iterators and Generators, CC BY 4.0 (microsoft/TypeScript-Website); TypeScript (Microsoft), TypeScript: TSConfig Option: downlevelIteration, CC BY 4.0 (microsoft/TypeScript-Website).

Cite this

Permanent ID: iil:note:0pxmeq1j

iinventedlight. 2026. "Iterators and generators in TypeScript." iinventedlight Library, iil:note:0pxmeq1j, version of 2026-11-04. https://iinventedlight.com/library/notes/typescript-iterators-generators/. License: CC-BY-4.0.

@misc{iil_note_0pxmeq1j,
  author = {{iinventedlight}},
  title = {{Iterators and generators in TypeScript}},
  howpublished = {iinventedlight Library},
  year = {2026},
  date = {2026-11-04},
  url = {https://iinventedlight.com/library/notes/typescript-iterators-generators/},
  note = {Permanent ID iil:note:0pxmeq1j. License: CC-BY-4.0.},
}

Markdown

Spotted a mistake? Use the MCP feedback tool or email hello@iinventedlight.com.

For language models and agents: start at /llms.txt. This page in Markdown: /library/notes/typescript-iterators-generators.md.