Generator
Generator<T = unknown, TReturn = any, TNext = unknown> extends Iterator<T, TReturn, TNext>
- 함수의 실행을 중간에 멈추고, 재개
- 실행을 멈추면서 중간 값을 전달
- 값을 미리 만들어 두지 않고 필요시에 생성
- Iterator의 일종
methods
gen.next(...args: []) => IteratorResult
: yield
키워드에 도달할때 까지 실행후 결과 반환
gen.throw(e) => IteratorResult
: 예외 발생, 결과값 value
는 catch
블록의 리턴값
gen.return() => IteratorResult
IteratorResult
{value, done : boolean | undefined}
function* createFibonacciGenerator() {
let a = 0;
let b = 1;
while (true) {
yield a;
[a, b] = [b, b + a];
}
}
let gen:Generator = createFibonacciGenerator();
let { value, done } = gen.next();
range
function* range(final: number) {
let i = 0;
if (isFinite(final) && Math.floor(final) === final) {
while (i < final) {
yield i;
i++;
}
} else {
throw new Error("Integer Only Possible");
}
}
const nums = [...range(10)]
for (let i of range(10)) {
console.log(i);
}