返回未等待的Promise的异步函数的返回类型

时间:2019-09-19 03:28:48

标签: typescript

我遇到了一个库,在该库中我需要从异步函数中返回未等待的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>

1 个答案:

答案 0 :(得分:0)

return await getNumberAsync();return getNumberAsync()将在JavaScript中返回完全相同的内容,即Promise<number>。不管有多少层,都无需使用Promise<Promise<Promise<type>>>之类的嵌套。

真正重要的唯一时间是在try-catch块中使用return await

否则,不建议使用return await,请参阅eslint规则no-return-await