[имя] что произойдёт при объединении базового объекта с patch-объектом через spread, если опциональное поле отсутствует или присутствует со значением `undefined`?

В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.

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

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

В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.

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

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

В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.

Например, {...{name:'Анна'}, ...{}} сохранит имя, а patch {name: undefined} заменит его на undefined. Опциональность TypeScript не удаляет runtime-свойство. Если undefined должен означать «не менять», отфильтруйте такие поля явно; null может иметь отдельную семантику очистки.

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

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

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

Подробнее