我遇到了一个库,在该库中我需要从异步函数中返回未等待的promise。但是,每当我尝试键入内容时-Typescript都会假定返回值已经解析。
这里是归结为:
async function getNumber(): Promise<number> {
return 5;
}
async function getUnawaitedPromise(): Promise<number> {
await fetch('...');
return getNumber();
}
这不会引发任何打字错误。但是对于异步函数getUnawaitedPromise()
,我希望返回类型为Promise<Promise<number>>
。
我认为这与本案无关:
function getNumber(): number {
return 5;
}
async function mustReturnPromise(): Promise<number> {
await fetch('...');
return getNumber();
}
我希望返回结果为Promise<ReturnTypeOfGetNumber>
。
答案 0 :(得分:0)
return await getNumberAsync();
和return getNumberAsync()
将在JavaScript中返回完全相同的内容,即Promise<number>
。不管有多少层,都无需使用Promise<Promise<Promise<type>>>
之类的嵌套。
真正重要的唯一时间是在try-catch块中使用return await
。
否则,不建议使用return await
,请参阅eslint规则no-return-await
。