Проверяет понимание поведения spread-оператора при объединении объектов с опциональными полями, особенно когда значение undefined.
Оператор spread (...) в JavaScript позволяет копировать собственные перечисляемые свойства из одного объекта в другой. При объединении базового объекта с patch-объектом, свойства из patch-объекта перезаписывают свойства базового объекта, если они существуют. Если свойство в patch-объекте отсутствует, оно не влияет на базовый объект. Если свойство присутствует со значением undefined, оно перезапишет значение базового объекта на undefined.
const base = { name: 'Alice', age: 30 };
const patch = { name: 'Bob' };
const result = { ...base, ...patch };
console.log(result); // { name: 'Bob', age: 30 }Здесь поле age отсутствует в patch, поэтому оно сохраняется из base.
const base = { name: 'Alice', age: 30 };
const patch = { age: undefined };
const result = { ...base, ...patch };
console.log(result); // { name: 'Alice', age: undefined }Поле age присутствует в patch со значением undefined, поэтому оно перезаписывает значение из base.
Это поведение важно при работе с функциями обновления состояния, например, в Redux или React. Если вы хотите обновить только некоторые поля, но не хотите затирать другие, нужно быть осторожным с undefined. Часто используют фильтрацию undefined перед объединением, чтобы избежать нежелательных перезаписей.
Spread-оператор копирует только существующие свойства, но если свойство есть со значением undefined, оно перезапишет базовое. Для безопасного обновления объектов с опциональными полями рекомендуется удалять undefined из patch-объекта перед объединением.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию