Generator의 세 타입 축

Generator<TYield, TReturn, TNext>는 밖으로 내보내는 값, 종료 값, 재개할 때 안으로 받는 값을 서로 분리합니다.

Generator<TYield, TReturn, TNext>next()와 yield 사이에서 이동하는 값의 방향을 타입 인자 세 개로 고정합니다.
밖으로

TYield

yield value가 done: false인 IteratorResult의 value로 소비자에게 전달됩니다.

종료

TReturn

return value가 done: true인 마지막 IteratorResult의 value가 됩니다.

안으로

TNext

next(input)의 input이 중단된 yield 표현식의 결과로 제너레이터 안에 들어갑니다.

핵심타입 축은 값의 방향을 설명하고, create → yield → resume → done은 별도의 실행 시간 순서입니다.