我有一个用后续返回类型声明异步函数的用例:
async function getNumber() {
const {number} = await API_getNumber();
return number;
}
export type Return = ReturnType<typeof getNumber>
这里Return
是Promise<number>
。然后,我需要使用此返回类型,但不知何故只能从中获取number
位,即没有前途。这可能吗?
答案 0 :(得分:3)
2种方法:
function promiseOne() {
return Promise.resolve(1)
}
const promisedOne = promiseOne()
type ThenArg<T> = T extends Promise<infer U> ? U : T
type PromiseOneThenArg = ThenArg<typeof promisedOne> // => number
2:
function promiseOne() {
return Promise.resolve(1)
}
type ThenArg<T> = T extends Promise<infer U> ? U :
T extends (...args: any[]) => Promise<infer U> ? U :
T
type PromiseOneThenArg = ThenArg<typeof promiseOne> // => number