В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.
[имя] что произойдёт при объединении базового объекта с patch-объектом через spread, если опциональное поле отсутствует или присутствует со значением `undefined`?
В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В {...base, ...patch} отсутствующее свойство не меняет base, а явно переданное enumerable-свойство со значением undefined перезаписывает его.
Например, {...{name:'Анна'}, ...{}} сохранит имя, а patch {name: undefined} заменит его на undefined. Опциональность TypeScript не удаляет runtime-свойство. Если undefined должен означать «не менять», отфильтруйте такие поля явно; null может иметь отдельную семантику очистки.