no-meaningless-void-operator
Disallow the
void
operator except when used to discard a value.
Extending "plugin:@typescript-eslint/strict"
in an ESLint configuration enables this rule.
Some problems reported by this rule are automatically fixable by the --fix
ESLint command line option.
Some problems reported by this rule are manually fixable by editor suggestions.
This rule requires type information to run.
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.
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"
}
};
Examples
- ❌ Incorrect
- ✅ Correct
void (() => {})();
function foo() {}
void foo();
(() => {})();
function foo() {}
foo(); // nothing to discard
function bar(x: number) {
void x; // discarding a number
return 2;
}
void bar(); // discarding a number
This rule accepts an options object with the following properties:
interface Options {
checkNever?: boolean;
}
const defaultOptions: Options = [{ checkNever: false }];
Options
checkNever: true
will suggest removing void
when the argument has type never
.