В чём разница в TypeScript между опциональным свойством `left?: T` и обязательным свойством `left: T | undefined`?

left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.

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

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

left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.

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

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

left?: T разрешает отсутствие свойства. left: T | undefined требует присутствия ключа, хотя его значение может быть undefined.

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

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

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

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

Подробнее