Skip to content

Latest commit

Β 

History

History
48 lines (34 loc) Β· 1.82 KB

prefer-object-destructuring-defaults.md

File metadata and controls

48 lines (34 loc) Β· 1.82 KB

prefer-object-destructuring-defaults

πŸ“ Prefer object destructuring defaults over default object literals with spread.

πŸ’ΌπŸš« This rule is enabled in the βœ… recommended config. This rule is disabled in the β˜‘οΈ unopinionated config.

πŸ’‘ This rule is manually fixable by editor suggestions.

Prefer object destructuring defaults over creating a temporary object literal with default properties and a final object spread.

Object destructuring defaults are shorter and make each default visible next to the binding that uses it. The suggested replacement destructures from a spread copy so it still works when the spread source is null or undefined, and so inherited or non-enumerable source properties are ignored like they are with object spread.

This rule uses suggestions because the two forms are not fully equivalent. For example, {foo: defaultValue, ...options} preserves an explicit options.foo value of undefined, while {foo = defaultValue} = {...options} applies the default in that case.

This rule intentionally reports only simple variable declarations. It does not report Object.assign(), destructuring assignment expressions, computed properties, or rest properties.

Examples

// ❌
const {foo, bar} = {
	foo: false,
	bar: 1,
	...options,
};

// βœ…
const {foo = false, bar = 1} = {...options};
// ❌
const {foo: localFoo} = {
	foo: false,
	...options,
};

// βœ…
const {foo: localFoo = false} = {...options};
// βœ…
const {foo, bar} = options;