no-meaningless-void-operator
Disallow the
void
operator except when used to discard a value.
Extending "plugin:@typescript-eslint/strict-type-checked"
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"
}
};
Try this rule in the playground ↗
Examples
Examples
- ❌ Incorrect
- ✅ Correct
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(1); // discarding a number
Open in PlaygroundOptions
This rule accepts the following options:
type Options = [
{
checkNever?: boolean;
},
];
const defaultOptions: Options = [{ checkNever: false }];
checkNever
checkNever: true
will suggest removing void
when the argument has type never
.
When Not To Use It
If you don't mind extra void
s in your project, you can avoid this rule.
Type checked lint rules are more powerful than traditional lint rules, but also require configuring type checked linting. See Performance Troubleshooting if you experience performance degredations after enabling type checked rules.