Извлечь вложенное свойство объекта

Как извлечь вложенное свойство объекта, без риска получить ошибку Uncaught TypeError: Cannot read property 'bar' of undefined.

Несколько способов решения:

  1. Проверять предыдущее значение на undefined с оператором &&:
const info = data && data.user && data.user.personalInfo
  1. Создавать страховочный объект, если значение undefined:
const info = ((data || {}).user || {}).personalInfo
  1. Использовать хелпер, или библиотеку:
const getNestedObject = (nestedObj, pathArr) => 
pathArr.reduce(
(obj, key) => (obj && obj[key] !== 'undefined') ? obj[key] : undefined,
nestedObj
);

const info = getNestedObject(data, ['user', 'personalInfo']);
  1. Proposal Optional Chaining. На момент написания поста (7 июля 2019) — stage 2:
const info = data?.user?.personalInfo;
Редактировать на GitHub