Node.js v9.0+非TypeScript环境下异步函数同步调用的Lint警告问询
检测TypeScript中未await异步函数调用的Linter方案(适配Node.js v9.0+)
当然有合适的工具!针对你提到的「调用异步函数却未使用await,且仅在函数名不带Async类后缀时触发警告」的需求,ESLint + @typescript-eslint/eslint-plugin 是完全适配的方案,而且开销极低,完美支持Node.js v9.0+版本。
核心规则与配置
最直接的解决方案是使用@typescript-eslint/no-floating-promises规则,它专门检测未被处理的Promise实例——包括你示例中直接调用异步函数却没加await的场景:
示例代码(会触发警告)
async function foo() { return; } var result = foo(); // 此处会被规则标记,因为未使用await处理Promise
自定义规则配置(适配命名例外)
如果你希望仅当函数名不带Async后缀时触发警告,可以在ESLint配置文件(比如.eslintrc.json)中给规则添加例外配置:
{ "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "rules": { "@typescript-eslint/no-floating-promises": [ "warn", // 可以设为"error"强制报错,或"warn"仅警告 { "ignorePattern": "^.*Async$" // 忽略所有以Async结尾的异步函数调用 } ] } }
这样配置后,调用fooAsync()未加await不会触发警告,但foo()未加await就会正常弹出提示,完全符合你的需求。
关于开销与兼容性
- 这套方案的开销非常低:ESLint本身是轻量级工具,
@typescript-eslint插件针对TypeScript做了性能优化,在Node.js v9.0+上运行毫无压力,不会拖慢开发流程。 - Node.js v9.0+已经原生支持
async/await语法,不需要额外的转译工具,直接就能配合ESLint进行检测。
内容的提问来源于stack exchange,提问作者PGT
相关产品推荐
相关产品推荐

