💼 This rule is enabled in the ✅ recommended
config.
🔧 This rule is automatically fixable by the --fix
CLI option.
undefined
is the default value for new variables, parameters, return statements, etc… so specifying it doesn't make any difference.
Where passing undefined
as argument is required is due to bad TypeScript types in functions, in which case you can use checkArguments: false
option.
Using undefined
as arrow function body sometimes make the purpose more explicit. You can use the checkArrowFunctionBody: false
option to allow this.
let foo = undefined;
const {foo = undefined} = bar;
const noop = () => undefined;
function foo() {
return undefined;
}
function* foo() {
yield undefined;
}
function foo(bar = undefined) {
}
function foo({bar = undefined}) {
}
foo(undefined);
let foo;
const {foo} = bar;
const noop = () => {};
function foo() {
return;
}
function* foo() {
yield;
}
function foo(bar) {
}
function foo({bar}) {
}
foo();
Type: object
Type: boolean
Default: true
Disallow the use of undefined
at the end of function call arguments. Pass checkArguments: false
to disable checking them.
// eslint unicorn/no-useless-undefined: ["error", {"checkArguments": true}]
foo(bar, baz, undefined);
// eslint unicorn/no-useless-undefined: ["error", {"checkArguments": false}]
foo(bar, baz, undefined);
Type: boolean
Default: true
Disallow the use of undefined
as arrow function body. Pass checkArrowFunctionBody: false
to disable checking them.
// eslint unicorn/no-useless-undefined: ["error", {"checkArrowFunctionBody": true}]
const foo = () => undefined;
// eslint unicorn/no-useless-undefined: ["error", {"checkArrowFunctionBody": false}]
const foo = () => undefined;
We recommend setting the ESLint array-callback-return
rule option allowImplicit
to true
:
{
"rules": {
"array-callback-return": [
"error",
{
"allowImplicit": true
}
]
}
}