I have a nested default object that I want to both extend and overwrite with nested properties. I tried with the spread operator but you can also use Ojbect.assign.
The problem is that nested objects get overridden instead of their respective properties getting overridden and/or extended.
const defaultOptions = {
  a: 0,
  b: 1,
  c: {
    hello: 'world',
    age: 20
  }
};
const specialOptions = {
  b: 0,
  c: {
    age: 10
  },
  d: 1
};
const options = {
  ...defaultOptions,
  ...specialOptions
}
console.log(options)
const expectedOptions = {
  a: 0,
  b: 0,
  c: {
    hello: 'world',
    age: 10
  },
  d: 1
}
console.log(expectedOptions)Update 2021-08-24
It seems this question is a duplicate of another so therefore I will delete it.
