studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[typescript - 2.3] Generators and Iteration for ES5/ES3 #43

Open sangwook-kim opened 7 years ago

sangwook-kim commented 7 years ago

Iterator

interface Iterator<T> {
  next(value?: any): IteratorResult<T>;
  return?(value?: any): IteratorResult<T>;
  throw?(e?: any): IteratorResult<T>;
}

위를 구현한 것에 대하여 Array의 element나 Map의 Key 값들과 같이 동기적으로 iterate하는데 유용함. Iterator 객체를 반환하는 Symbol.iterator 메서드를 가지고 있으면 Iterable 하다 할 수 있다. 또한, Iterator protocol은 for..of 연산자와 spread 연산자를 지원함.

Generator

Iterator 인터페이스와 yield 키워드를 사용해서, ES2015 Generator를 지원함. 참고 : Generator란 egghead

ES3/ES5 지원

--downlevelIteration 플래그를 사용하면 타겟 코드가 ES3/ES5인 경우에도 이들을 사용할 수 있음. [Symbol.iterator]()메서드가 없는 경우 synthetic array iterator를 만들어 사용함