ESLint:如何在函数上找到不必要的“异步”标记?

Luk*_*ams 11 promise typescript eslint typescript-eslint

我想async从不需要它的函数中删除任何修饰符。具体来说,那些既不返回承诺也不进行任何await调用的内容不应被标记async

我知道并不是每个人都想要这个,例如遗留代码库可能有很多这样的代码,而调用者不值得改变。然而,对于新的代码库,我想删除async不必要的地方,因为这使得函数使用起来更干净,并且更容易测试和推理(这表明该函数不依赖于任何异步行为 - 尽管它可能仍然具有异步行为)副作用)。

其中一些很容易被忽略,特别是在await函数中唯一的调用async被分解出来的情况下,但开发人员没有意识到该函数不再需要异步。

有没有办法用 ESLint 或其他方式检查这一点?我在网络搜索中找不到结果。

Luk*_*ams 13

这是 TS 规则:@typescript-eslint/require-await

以及普通 JS ESLint 版本:require-await

这应该可以防止任何无用的async标记。

它正确地标记了一个简单的示例:

export async function a() {
  return 1;
}
Run Code Online (Sandbox Code Playgroud)