TypeScriptでPromiseの型を知りたい
-
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
を返す