TypeScript で Promise の型を知りたい時、こうするとで型が取れます。
type ResolvedType<T> = T extends ((...args: any[]) => infer R)
? R extends Promise<infer S> ? S : R
: T;
const res: ResolvedType<typeof fetch> = await fetch('/api/user');
T
が関数の時
T
が Promise
に含まれているならば Promise(S)
の S
を返すT
の返り値 R
を返すT
が関数以外の時、T
を返す