版本

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 中引入。

資源

變更語言