禁止使用无意义的 void 运算符
禁止使用
void
运算符,除非用于丢弃值。
🔒
在 "plugin:@typescript-eslint/strict-type-checked"
中扩展 ESLint 配置 将启用此规则。
🔧
此规则报告的一些问题可以通过 --fix
ESLint 命令行选项 自动修复。
💡
此规则报告的一些问题可以通过编辑器 建议 手动修复。
💭
此规则需要 类型信息 才能运行。
TypeScript 中的 void
指的是一个旨在被忽略的函数返回值。void
运算符是一个有用的工具,可以传达程序员丢弃值的意图。例如,建议将其作为一种抑制 @typescript-eslint/no-floating-promises
的方法,而不是向 promise 添加 .catch()
。
此规则帮助作者捕获 API 更改,在这些更改中,以前在调用站点丢弃了一个值,但被调用者发生了更改,因此不再返回值。与 no-unused-expressions 结合使用时,它还有助于代码的阅读者,通过确保一致性:看起来像 void foo();
的语句始终丢弃返回值,而看起来像 foo();
的语句从不丢弃返回值。此规则报告任何其参数已经是 void
或 undefined
类型的 void
运算符。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-meaningless-void-operator": "error"
}
};
在游乐场中尝试此规则 ↗
示例
示例
- ❌ 错误
- ✅ 正确
void (() => {})();
function foo() {}
void foo();
在 Playground 中打开(() => {})();
function foo() {}
foo(); // nothing to discard
function bar(x: number) {
void x; // discarding a number
return 2;
}
void bar(1); // discarding a number
在 Playground 中打开选项
此规则接受以下选项
type Options = [
{
checkNever?: boolean;
},
];
const defaultOptions: Options = [{ checkNever: false }];
checkNever
checkNever: true
将建议在参数类型为 never
时移除 void
。
何时不使用它
如果您不介意项目中存在额外的 void
,可以避免使用此规则。
类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查规则后遇到性能下降,请参阅 性能故障排除。