더북(TheBook)
const all = await Promise.all([
  'string',
  Promise.resolve(123),
  Promise.resolve(Promise.resolve(true)),
]);
// const all: [string, number, boolean]
export {};

Promise.all의 타입도 다시 한번 보겠습니다.

lib.es2015.promise.d.ts

interface PromiseConstructor {
  ...
  all<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }>;
  ...
}

values가 첫 번째 매개변수이므로 values의 타입인 T[string, Promise<number>, Promise<Promise<boolean>>]입니다. Promise.all의 반환값은 Promise<{ -readonly [P in keyof T] : Awaited<T[P]> }>;인 매핑된 객체 타입으로, 다음과 비슷합니다.

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