我想创建一个具有一些默认值的变量,该变量是promise解析的返回类型的扩展接口。我的功能将是这样的:
function getAge(): Promise<number> {
return new Promise((resolve) => {
resolve(42)
})
}
我的默认值变量为:
let user: { name: string, age: number } = { name: "", age: 0 }
我尝试使用ReturnType <>,但是当我只想返回数字时,我似乎只能得到返回类型Promise<number>
。
答案 0 :(得分:1)
您可以使用条件类型来提取承诺的值类型:
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
答案 1 :(得分:1)
我喜欢上面的答案('2021-03-28 16:00:00 Africa/Tunis'::timestamptz
'2021-03-28 16:00:00 Europe/Berlin'::timestamptz
示例)。
或者,您可以定义一个类似于 ReturnType 的类型,只是将返回值作为一个 promise。
UnboxPromise
示例:
type ReturnPromiseType<T extends (...args: any) => Promise<any>> = T extends (...args: any) => Promise<infer R> ? R : any;