[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*
function* expression - JavaScript | MDN
The function* keyword can be used to define a generator function inside an expression.
developer.mozilla.org
예제 코드
(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 |
---|