Вы можете сортировать оператора спреда.У вас будет не такой красивый синтаксис, как, но он работает:
const obj = {
foo: {
bar: null
}
}
const id = {...{...{...obj}.foo}.bar}.id
// id = undefined
You can add an "or something" to the end to get a default value, like:
const id = {...{...{...obj}.foo}.bar}.id || 42
// id = 42
Принцип, как это работает, заключается в том, что если вы попытаетесь распространить неопределенное или нулевое значение, вы получите пустойobject:
console.log('spreaded null', { ...null })
// {}
console.log('spreaded undefined', { ...undefined })
// {}
Теперь, если вы обращаетесь к свойству, которое не определено для объекта, механизм JS вернет вам undefined
, таким образом, вы можете распространить его, чтобы иметь еще один пустой объект для цепочкиследующее внутреннее свойство, к которому вам нужно получить доступ.