実行を一時停止・再開できる関数。イテレータの実装に使われる
function* range(start: number, end: number) {
for (let i = start; i <= end; i++) yield i;
}
for (const n of range(1, 5)) console.log(n); // 1〜5
// 無限シーケンス
function* naturalNumbers() {
let n = 1;
while (true) yield n++;
}無限シーケンスや遅延評価に有用。async/awaitの基盤技術でもある。for...ofや配列スプレッドで消費できる。