版本

prefer-object-spread

禁止使用以物件實字作為第一個參數的 Object.assign,並建議改用物件展開語法

🔧 可修正

此規則報告的某些問題可以透過 --fix 命令列 選項自動修正

❄️ 凍結

此規則目前為凍結狀態,且不接受功能請求。

Object.assign 被呼叫時,若使用物件實字作為第一個參數,此規則要求改用物件展開語法。此規則也會警告當 Object.assign 呼叫只使用一個物件實字參數的情況,在這種情況下,不需要 Object.assign 呼叫。

物件展開語法在 ES2018 中引入,是一種宣告式的替代方案,效能可能比更動態、命令式的 Object.assign 更好。

規則詳情

此規則的錯誤程式碼範例

在 Playground 中開啟
/*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 });

此規則的正確程式碼範例

在 Playground 中開啟
/*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 中引入。

資源

變更語言