И Object.assign, и Object spread делают только мелкое слияние.
Пример проблемы:
// No object nesting
const x = { a: 1 }
const y = { b: 1 }
const z = { ...x, ...y } // { a: 1, b: 1 }
Результат - это то, что вы ожидаете. Однако, если я попробую это:
// Object nesting
const x = { a: { a: 1 } }
const y = { a: { b: 1 } }
const z = { ...x, ...y } // { a: { b: 1 } }
Вместо
{ a: { a: 1, b: 1 } }
ты получаешь
{ a: { b: 1 } }
x полностью перезаписывается, поскольку синтаксис распространения распространяется только на один уровень. Object.assign()
же самое происходит с Object.assign()
.
Есть ли способ сделать это?