首页 > 解决方案 > 当 Promise 返回类型未等待时在 VS Code 中发出警告?

问题描述

我正在使用 Visual Studio Code 打字稿,我想知道是否有办法让编辑器在有异步函数调用时显示某种警告(函数返回 a Promise)但调用者不等待它(这样程序员会不会意外地假设一个函数是同步的并这样使用它)。

标签: typescriptvisual-studio-code

解决方案


只要您使用的是 typescript,类型系统就会提醒您,无论您在何处使用该 promise 的已解析值,都不能使用该 promise:

function foo(): Promise<number> {
    return new Promise(resolve => resolve(123))
}

const myNumber: number = foo() // forgot await
// ^ Type 'Promise<number>' is not assignable to type 'number'.

操场

所以,实际上,打字稿已经做了你想要的,只是不是你想的那样。


此外,有很好的理由表明可能不会等待承诺。一个可能是你想要一堆并行的异步操作,所以你收集 Promise 并传递它们Promise.all。或者也许您处于不允许的顶层await,而使用它更简单then

因此,只需让类型系统按预期工作,不要担心。当您开始实际使用等待的值时,如果做错了,就会出现上述类型的错误。


推荐阅读