no-meaningless-void-operator
Disallow the
void
operator except when used to discard a value.
在 ESLint 配置 中扩展"plugin:@typescript-eslint/strict-type-checked"
可启用此规则。
此规则报告的一些问题可通过 --fix
ESLint 命令行选项自动修复。
此规则报告的一些问题可以通过编辑器 建议 手动修复。
该规则需要 类型信息 才能运行。
TypeScript 中的 void
指的是要被忽略的函数返回。
void
运算符是传达程序员丢弃值的意图的有用工具。
例如,建议将其作为抑制 @typescript-eslint/no-floating-promises
而不是将 .catch()
添加到 Promise 的一种方法。
英:void
in TypeScript refers to a function return that is meant to be ignored.
The void
operator is a useful tool to convey the programmer's intent to discard a value.
For example, it is recommended as one way of suppressing @typescript-eslint/no-floating-promises
instead of adding .catch()
to a promise.
此规则可帮助作者捕获 API 更改,其中先前值在调用站点被丢弃,但被调用者发生更改,因此不再返回值。
当与 no-unused-expressions 结合使用时,它还可以通过确保一致性来帮助代码的读者: 看起来像 void foo();
的语句是 always 丢弃返回值,而看起来像 foo();
的语句是 never 丢弃返回值。
此规则报告其参数已为 void
或 undefined
类型的任何 void
运算符。
英:This rule helps an authors catch API changes where previously a value was being discarded at a call site, but the callee changed so it no longer returns a value.
When combined with no-unused-expressions, it also helps readers of the code by ensuring consistency: a statement that looks like void foo();
is always discarding a return value, and a statement that looks like foo();
is never discarding a return value.
This rule reports on any void
operator whose argument is already of type void
or undefined
.
module.exports = {
"rules": {
"@typescript-eslint/no-meaningless-void-operator": "error"
}
};
示例
- ❌ 不正确
- ✅ 正确
void (() => {})();
function foo() {}
void foo();
Open in Playground(() => {})();
function foo() {}
foo(); // nothing to discard
function bar(x: number) {
void x; // discarding a number
return 2;
}
void bar(); // discarding a number
Open in Playground选项
checkNever
当参数的类型为 never
时,checkNever: true
将建议删除 void
。
英:checkNever: true
will suggest removing void
when the argument has type never
.
何时不使用它
如果你不介意项目中存在额外的 void
,则可以避免此规则。
英:If you don't mind extra void
s in your project, you can avoid this rule.
选项
该规则接受以下选项
type Options = [
{
checkNever?: boolean;
},
];
const defaultOptions: Options = [{ checkNever: false }];