ReturnType<typeof F> 其中 F 是返回类型 Promise<T>

问题描述 投票:0回答:2

我想将变量的类型设置为

T
.

如果

F
是一个不返回 promise 并且只返回一个
T
类型的对象的函数,我会做这样的事情:
let x: ReturnType<typeof F>

但是

F
是一个返回
Promise<T>

的函数

我该怎么做?

typescript promise type-inference
2个回答
1
投票

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

0
投票

或者,你可以这样做:

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

type SumUnwrappedType = Awaited<ReturnType<typeof sumAsync>>
© www.soinside.com 2019 - 2024. All rights reserved.