typescript 其中F是返回类型Promise的函数< T>

zkure5ic  于 2023-03-04  发布在  TypeScript
关注(0)|答案(2)|浏览(135)

我想将变量的类型设置为T
如果F是一个不返回promise而只返回T类型的对象的函数,我会做如下的事情:let x: ReturnType<typeof F>
但是F是一个返回Promise<T>
我该怎么做呢?

e0bqpujr

e0bqpujr1#

您可以改编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
rqdpfwrv

rqdpfwrv2#

或者,你可以这样做:

async function sumAsync(a: number, b: number): Promise<number> {
  return a + b;
}

type SumUnwrappedType = Awaited<ReturnType<typeof sumAsync>>

相关问题