Promise와 같은 타입에 감싸인 타입이 있을 때, 안에 감싸인 타입이 무엇인지 어떻게 알 수 있을까요?
type ExampleType = Promise<string>
type Result = MyAwaited<ExampleType> // string
해결해야 할 문제는 Promise 타입으로 감싸진 타입을 반환시켜야하는 것입니다.
먼저 만들 제네릭은 한개의 타입변수를 받을 것이다. Promise타입이다.
type MyAwaited<T>
그리고 조건 부 내에서 타입을 추론합니다.
type MyAwaited<T> = T extends Promise<infer InnerType> ? InnerType : T;
만약 Promise로 감싸진 타입이 맞다면 감싸진 타입을 반환시키고 promise가 아니라면 그냥 기존 타입을 그대로 반환시킵니다.