typescript - 获取已解决 promise 的返回类型?

标签 typescript

我想创建一个具有一些默认值的变量,它是从 promise 中解析的返回类型的扩展接口(interface)。我的功能类似于:

function getAge(): Promise<number> {
  return new Promise((resolve) => {
  resolve(42)
  })
}

我的默认值变量是:

let user: { name: string, age: number } = { name: "", age: 0 }

我试过使用 ReturnType<>,但我似乎只能得到返回类型 Promise<number> ,当我只想返回数字时。

最佳答案

您可以使用条件类型来提取 promise 的值类型:

function getAge(): Promise<{ name: string, age: number }> {
  return new Promise((resolve) => {
  resolve({ name: "", age: 42 })
  })
}

type UnboxPromise<T extends Promise<any>> = T extends Promise<infer U> ? U: never;

let user: UnboxPromise<ReturnType<typeof getAge>> = { name: "", age: 0 }

阅读更多关于条件类型的信息 here

关于typescript - 获取已解决 promise 的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57267067/

相关文章:

typescript - Typescript 中括号表示法的类型

Angular 4 - Http 到 HttpClient - 对象类型上不存在属性 'someproperty'

html - Angular 8 :ERROR TypeError: Cannot read property 'invalid' of undefined

javascript - 如何将字符串转换为 typescript 中的对象

javascript - typescript window.setInterval() 无法正常工作

javascript - typescript 文件中的导入模块给出错误 "cannot compile modules unless the ' --module' flag is provided"

javascript - 如何将 react-tether 与 react-dom createPortal 一起使用,以便能够根据它所绑定(bind)的组件来设置绑定(bind)组件的样式?

javascript - TypeScript 和类型别名

javascript - 标准 "Match URL"的预期匹配请求 - 未找到 - Angular2+

javascript - 如何更改 Lodash 函数在 Typescript 中的使用方式?