版本

prefer-object-spread

禁止使用以对象字面量作为第一个参数的 Object.assign,并建议使用对象展开语法代替

🔧 可修复

此规则报告的某些问题可以通过 --fix 命令行 选项自动修复

❄️ 已冻结

此规则目前处于冻结状态,不接受功能请求。

当使用对象字面量作为第一个参数调用 Object.assign 时,此规则要求使用对象展开语法代替。此规则还会警告仅使用对象字面量作为单个参数调用 Object.assign 的情况,在这种情况下,不需要调用 Object.assign

对象展开语法在 ES2018 中引入,它是一种声明式的替代方案,性能可能优于更动态、命令式的 Object.assign

规则详情

此规则的 错误 代码示例

在游乐场中打开
/*eslint prefer-object-spread: "error"*/

Object.assign({}, foo);

Object.assign({}, {foo: 'bar'});

Object.assign({ foo: 'bar'}, baz);

Object.assign({}, baz, { foo: 'bar' });

Object.assign({}, { ...baz });

// Object.assign with a single argument that is an object literal
Object.assign({});

Object.assign({ foo: bar });

此规则的 正确 代码示例

在游乐场中打开
/*eslint prefer-object-spread: "error"*/

({ ...foo });

({ ...baz, foo: 'bar' });

// Any Object.assign call without an object literal as the first argument
Object.assign(foo, { bar: baz });

Object.assign(foo, bar);

Object.assign(foo, { bar, baz });

Object.assign(foo, { ...baz });

何时不使用

除非您的代码库支持 ES2018,否则不应使用此规则。

版本

此规则在 ESLint v5.0.0-alpha.3 中引入。

资源

更改语言