Skip to content

Latest commit

 

History

History
157 lines (114 loc) · 2.7 KB

no-useless-undefined.md

File metadata and controls

157 lines (114 loc) · 2.7 KB

Disallow useless undefined

💼 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.

Fail

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);

Pass

let foo;
const {foo} = bar;
const noop = () => {};
function foo() {
	return;
}
function* foo() {
	yield;
}
function foo(bar) {
}
function foo({bar}) {
}
foo();

Options

Type: object

checkArguments

Type: boolean
Default: true

Disallow the use of undefined at the end of function call arguments. Pass checkArguments: false to disable checking them.

Fail

// eslint unicorn/no-useless-undefined: ["error", {"checkArguments": true}]
foo(bar, baz, undefined);

Pass

// eslint unicorn/no-useless-undefined: ["error", {"checkArguments": false}]
foo(bar, baz, undefined);

checkArrowFunctionBody

Type: boolean
Default: true

Disallow the use of undefined as arrow function body. Pass checkArrowFunctionBody: false to disable checking them.

Fail

// eslint unicorn/no-useless-undefined: ["error", {"checkArrowFunctionBody": true}]
const foo = () => undefined;

Pass

// eslint unicorn/no-useless-undefined: ["error", {"checkArrowFunctionBody": false}]
const foo = () => undefined;

Conflict with ESLint array-callback-return rule

We recommend setting the ESLint array-callback-return rule option allowImplicit to true:

{
	"rules": {
		"array-callback-return": [
			"error",
			{
				"allowImplicit": true
			}
		]
	}
}