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
- id: C1 claim: An object is iterable if it implements Symbol.iterator. source: S1 evidence: "An object is deemed iterable if it has an implementation for the Symbol.iterator property."
- id: C2 claim: Built-in types like Array, Map and Set implement Symbol.iterator. source: S1 evidence: "Some built-in types like Array, Map, Set, String, Int32Array, Uint32Array, etc. have their"
- id: C3 claim: ECMAScript 6 added new iteration primitives like for/of. source: S2 evidence: "ECMAScript 6 added several new iteration primitives: the for / of loop"
- id: C4 claim: downlevelIteration enables accurate iteration in ES5 environments. source: S2 evidence: "downlevelIteration allows for these iteration primitives to be used more accurately in ES5 environments"
Sources
- [S1] TypeScript: Documentation - Iterators and Generators. TypeScript (Microsoft). https://www.typescriptlang.org/docs/handbook/iterators-and-generators.html . License: CC BY 4.0 (microsoft/TypeScript-Website). Accessed 2026-11-04.
- [S2] TypeScript: TSConfig Option: downlevelIteration. TypeScript (Microsoft). https://www.typescriptlang.org/tsconfig/downlevelIteration.html . License: CC BY 4.0 (microsoft/TypeScript-Website). Accessed 2026-11-04.
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
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.},
}
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.