Skip to main content

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.

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-meaningless-void-operator": "error"
}
};
Try this rule in the playground ↗

Examples

void (() => {})();

function foo() {}
void foo();

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.

Resources