Необходимо написать метод для получения значения по ключу объекта с неограниченной вложенностью и сигнатурой

Разбейте путь по точкам и последовательно переходите по собственным свойствам, возвращая undefined при отсутствии участка.

Короткий ответ

Что ответить на собеседовании

Разбейте путь по точкам и последовательно переходите по собственным свойствам, возвращая undefined при отсутствии участка.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо написать метод для получения значения по ключу объекта с неограниченной вложенностью и сигнатурой

get(path: string, data: Record<string, unknown>): unknown const data = { user: { profile: { name: 'Имя' } } } get('user.profile.name', data)

Ответ

Разбейте путь по точкам и последовательно переходите по собственным свойствам, возвращая undefined при отсутствии участка.

Здесь точка — разделитель, пустой путь возвращает исходный объект. Ключи с точками требуют другого контракта; обход прототипа запрещён.

function get(path: string, data: Record<string, unknown>): unknown {
  if (path === '') return data;
  let current: unknown = data;
  for (const key of path.split('.')) {
    if (current === null || typeof current !== 'object' ||
        !Object.prototype.hasOwnProperty.call(current, key)) return undefined;
    current = (current as Record<string, unknown>)[key];
  }
  return current;
}

Итеративный обход не расходует стек на глубину пути. Код рассчитан на обычные данные; чтение getter или Proxy может иметь побочный эффект.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее