left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.
В чём разница в TypeScript между опциональным свойством `left?: T` и обязательным свойством `left: T | undefined`?
left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.
Для T = number объект {} подходит первому типу, но не второму; {left: 1} подходит обоим. При включённом exactOptionalPropertyTypes явное {left: undefined} не подходит left?: number без добавления undefined. Чтение необязательного свойства всё равно требует учёта его отсутствия.