Использование функции get позволяет избежать проблемы невозможности получения атрибута, если не получен ключ длинной цепочки. В настоящее время при выполнении предотвращения исключений и его услуг, таких как o.a && o.a.b && o.a.b.c && o.a.b.c.d

Реализация аналогична lodash.get [2] со следующими тестовыми примерами:

const object = { 'a': [{ 'b': { 'c': 3 } }] };
 
//=> 3
get(object, 'a[0].b.c');

//=> 3
get(object, 'a[0]["b"]["c"]')

//=> 10086
get(object, 'a[100].b.c', 10086);

Последующие вопросы:

“ 1. Как реализовать функцию lodash.get с использованием нотации ts? “

Код смотрите, как реализовать функцию, аналогичную lodash.get — codepen [3]

function get (source, path, defaultValue = undefined) {
  // a[3].b -> a.3.b -> [a, 3, b]
  const paths = path.replace(/\[(\w+)\]/g, '.$1').replace(/\["(\w+)"\]/g, '.$1').replace(/\['(\w+)'\]/g, '.$1').split('.')
  let result = source
  for (const p of paths) {
    result = result?.[p]
  }
  return result === undefined ? defaultValue : result 
}
const object = { a: [{ b: { c: 3 } }] };
const result = _.get(object, 'a[0].b.c', 1);