Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Вопросительный знак после имени поля делает его необязательным. Теперь оба объекта проходят проверку: u1 с почтой, u2 без неё.
?Запись email?: string даёт тип string | undefined. Компилятор об этом помнит, поэтому такой код не пройдёт:
Перед использованием значение нужно проверить:
Это первое знакомство с сужением типов, к которому курс вернётся в заданиях про typeof и оператор in.
email?: string и email: string | undefinedЗаписи похожи, но не равны. Во втором случае поле остаётся обязательным: его нужно передать явно, пусть даже со значением undefined.
Выбирать стоит по смыслу: «поля может не быть» это ?, «поле есть всегда, но значение может быть пустым» это union с undefined.