ReturnType <typeof F>, где F - это функция, которая возвращает тип Promise <T> - PullRequest
1 голос
/ 04 июня 2019

Я хочу установить тип переменной на T.

Если бы F была функцией, которая НЕ возвращала обещание и просто возвращала объект типа T, я бы просто сделал что-то вроде этого: let x: ReturnType<typeof F>

Но F - это функция, которая возвращает Promise<T>

Как я могу это сделать?

1 Ответ

0 голосов
/ 05 июня 2019

Вы можете адаптировать пример, приведенный в разделе Вывод типа в условных типах главы «Расширенные типы» руководства Typescript

type Unpacked<T> =
  T extends (...args: any[]) => infer U ? U :
  T extends Promise<infer U> ? U :
  T;

Например, для fetch вы получите

type T = Unpacked<Unpacked<typeof fetch>>
// Response
...