# prefer-object-spread

禁止将 Object.assign 与对象字面作为第一个参数一起使用,而更喜欢使用对象扩展。

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

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

在 ES2018 中引入的 object spread 是一种声明式替代方案,它可能比更具动态性、命令式的 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,否则不应使用此规则。

Last Updated: 5/13/2023, 8:55:38 PM