[JS] Generator (Python의 그것)
2022. 4. 18. 13:31
JS에도 generator가 있다는건 처음 알았네. Python generator 개념과 완전히 같은걸까?
(공부 - Python generator 복습)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function*
예제 코드
(`yield *range ~`로 recursion 호출하는 부분이 너무 생소하다)
function* range(start, end) {
yield start;
if (start === end) return;
yield* range(start + 1, end); // Q. way to write recursion of generator in JS?
}
const gen = range(1, 10);
// console.log(gen.next())
// console.log(gen.next().value)
let done = false;
while(!done){
let res = gen.next();
console.log(res.value);
done = res.done;
}
요 예시도 좋은 듯.
그냥 일반 function vs generator
generator supports 'lazy evaluation' (공부 - PL 복습, functional programming)
let x = function*(y) {
yield y * y;
};
console.log(typeof x, x(4), x(4).next(), x(4).next().value)
TS로 typing하면?
function* range(start: number, end: number): Generator<number, void> {
yield start;
if (start === end) return;
yield* range(start + 1, end);
}
참고) https://www.typescriptlang.org/docs/handbook/iterators-and-generators.html
'<언어> > [Typescript]' 카테고리의 다른 글
내가 만든 custom type 관리하는 방법 (0) | 2022.02.12 |
---|