Open sangwook-kim opened 7 years ago
interface AsyncIterator<T> { next(value?: any): Promise<IteratorResult<T>>; return?(value?: any): Promise<IteratorResult<T>>; throw?(e?: any): Promise<IteratorResult<T>>; }
일반 Iterator와 달리 IteratorResult의 Promise를 반환하는 메소드들을 제공하는 것이 차이점. AsyncIterator 객체를 반환하는 Symbol. asyncIterator 메서드를 가지고 있으면 Iterable 하다 할 수 있다.
Iterator
IteratorResult
Promise
AsyncIterator
Symbol. asyncIterator
비동기 방식의 Generator. yield* 호출을 사용.
Generator
yield*
async function* g() { yield 1; await sleep(100); yield* [2, 3]; yield* (async function *() { await sleep(100); yield 4; })(); }
일반 Generator와 마찬가지로 Async Generators는 Arrow function으로 만들 수 없다.
Async Generators
Arrow function
비동기 Iterator와 generator에대해서 for...of에 해당하는 for...await...of 문이 도입됨.
for...of
for...await...of
Generic에 심지어 default 인자를 사용할 수 있게 됨.
Generic
default
declare function create(): Container<HTMLDivElement, HTMLDivElement[]>; declare function create<T extends HTMLElement>(element: T): Container<T, T[]>; declare function create<T extends HTMLElement, U extends HTMLElement>(element: T, children: U[]): Container<T, U[]>;
위의 내용을 default인자를 사용하면
declare function create<T extends HTMLElement = HTMLDivElement, U = T[]>(element?: T, children?: U): Container<T, U>;
와 같이 쓸 수 있음. 이러한 Generic의 default 인자는 다음의 규칙을 따른다.
Async iterators
일반
Iterator
와 달리IteratorResult
의Promise
를 반환하는 메소드들을 제공하는 것이 차이점.AsyncIterator
객체를 반환하는Symbol. asyncIterator
메서드를 가지고 있으면 Iterable 하다 할 수 있다.Async Generator
비동기 방식의
Generator
.yield*
호출을 사용.일반
Generator
와 마찬가지로Async Generators
는Arrow function
으로 만들 수 없다.for-await-of
비동기 Iterator와 generator에대해서
for...of
에 해당하는for...await...of
문이 도입됨.Generic parameter defaults
Generic
에 심지어default
인자를 사용할 수 있게 됨.위의 내용을
default
인자를 사용하면와 같이 쓸 수 있음. 이러한
Generic
의default
인자는 다음의 규칙을 따른다.