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 });
FphvHt5MK/G5o4JKMpo8wFZScNX7kGyQzE3xqEeYlFcVQkbgr+qufrIGgDR/9BRp
/*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 });
何时不使用
PrWC7vzI1yvMK1Xvicb8YAnj4WP7vYfEQjo5tGfpTjdSMlOL5jBBZ8odzcTTmhZb7SYb8IjSlaYYLF44/NZZL4ulOz6B8Bnfgmn3cihGWbQ=