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]> }>;인 매핑된 객체 타입으로, 다음과 비슷합니다.