Узнал об еще одном способе объединения объектов.
Хочется дать возможность передавать в функцию объект, у которого могут быть заданы не все свойства. Недостающие должны быть заполнены из дефолтного шаблона. Например:
let input = {
a:1,
c:3
}
let template = {
a:11,
b:22,
c:33
}
Раньше я делал так:
let result1 = Object.assign(template, input);
Оказывается, можно проще:
let result2 = {...template, ...input}
Результат:
Object {
a: 1,
b: 22,
c: 3
}
К сожалению, вложенные объекты просто перезаписываются, без объединения свойств.