더북(TheBook)

data의 타입은 무엇일까요? 자바스크립트를 알고 있으므로 data'hi'이고 string 타입이라는 것을 알 수 있습니다. 하지만 타입만으로도 확인할 수 있어야 합니다. 다시 Promise 인스턴스의 타입을 봅시다.

lib.es5.d.ts

interface Promise<T> {
  then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
  catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;
}

then 메서드를 보면 첫 번째 매개변수인 onfulfilled의 타입을 확인할 수 있습니다.

Awaited<T>에서 TPromise인 상황이므로 TPromise<X>라고 해봅시다. X는 임의의 타입을 나타내는 미지수입니다. onfulfilled 콜백 함수의 타입은 (value: X) => TResult1 | PromiseLike<TResult1>) | undefined | null입니다. 이 함수가 Awaited<T>에서의 F입니다. 다시 F 함수에서 첫 번째 매개변수인 value를 찾을 수 있습니다. value의 타입은 X입니다. 이것이 Awaited<T>에서의 V입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.