1. 迭代器
迭代器是一種對象,它提供了一種統一的方式來訪問集合中的元素,而不暴露集合的內部結構。在 TypeScript 中,迭代器通過實現 Iterator
接口來定義。
interface Iterator<T> {next(): IteratorResult<T>;
}interface IteratorResult<T> {value: T;done: boolean;
}
迭代器對象必須包含一個名為 next()
的方法,該方法返回一個 IteratorResult
對象,其中 value
表示當前迭代的值,done
表示迭代是否已經結束。
2. 生成器
生成器是一種特殊的函數,它可以在執行過程中暫停并在需要時恢復執行。生成器通過 function*
關鍵字定義,并使用 yield
關鍵字來暫停執行并返回值。
function* generateSequence() {yield 1;yield 2;yield 3;
}let gen = generateSequence();
console.log(gen.next()); // { value: 1, done: false }
console.log(gen.next()); // { value: 2, done: false }
console.log(gen.next()); // { value: 3, done: false }
console.log(gen.next()); // { value: undefined, done: true }
生成器函數返回的是一個迭代器對象,通過調用 next()
方法可以依次獲取生成器生成的值。
3. 實際應用場景
- 遍歷集合:通過迭代器可以遍歷數組、Map、Set 等集合類型的數據。
- 異步編程:生成器可以用來簡化異步任務的編寫,使得異步代碼看起來像同步代碼一樣易于理解和維護。
- 惰性計算:生成器可以用來實現惰性計算,只有在需要時才計算下一個值,節省資源和提高性能。
4. TypeScript 中的迭代器和生成器
在 TypeScript 中,迭代器和生成器是語言的一部分,可以直接使用而不需要額外的庫或框架。通過合理利用迭代器和生成器,可以使代碼更加清晰、簡潔和易于維護。