Проверяет понимание синтаксиса деструктуризации объекта в сочетании с optional chaining в JavaScript.
Деструктуризация объекта — это удобный способ извлечения свойств в отдельные переменные. Optional chaining (?.) позволяет безопасно обращаться к вложенным свойствам, если промежуточное значение может быть null или undefined. Однако эти два синтаксиса нельзя объединить напрямую в одном выражении: попытка написать const { a } = obj?.b приведёт к синтаксической ошибке, потому что optional chaining не может быть использован в левой части присваивания при деструктуризации.
Чтобы достичь желаемого эффекта, нужно сначала получить объект через optional chaining, а затем применить деструктуризацию. Если результат может быть undefined, можно задать значение по умолчанию для всей деструктуризации или для отдельных свойств.
const obj = { nested: { a: 1, b: 2 } };
// Неправильно: синтаксическая ошибка
// const { a } = obj?.nested;
// Правильно: сначала получаем объект, потом деструктуризируем
const { a, b } = obj?.nested ?? {};
console.log(a, b); // 1 2
// Если obj.nested отсутствует, получим значения по умолчанию
const obj2 = {};
const { a: a2 = 0, b: b2 = 0 } = obj2?.nested ?? {};
console.log(a2, b2); // 0 0Этот паттерн часто используется при работе с ответами API, где структура данных может быть неполной. Например, при получении профиля пользователя можно безопасно извлечь имя и email, даже если поле profile отсутствует.
const user = { id: 1 };
const { name = 'Аноним', email = 'нет' } = user?.profile ?? {};
console.log(name, email); // Аноним нетИспользуйте optional chaining для безопасного доступа к вложенным объектам, а затем применяйте деструктуризацию с значениями по умолчанию через ?? {}. Это делает код устойчивым к отсутствующим данным и улучшает читаемость.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию