Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Разметка здесь уже верная: Id допускает значение либо строкового, либо числового типа, и обе константы подходят. Всё интересное в этом задании начинается за пределами самих строк кода.
Union это закрытый список: всё, что в нём не перечислено, отвергается.
a.toUpperCase() подчёркиваетсяХотя в a лежит строка, тип переменной объявлен как Id, и компилятор работает с типом, а не со значением. Для значения типа string | number доступно только пересечение возможностей обоих вариантов, а toUpperCase есть лишь у одного из них.
Отсюда правило, которое стоит запомнить: union ограничивает то, что можно делать со значением, пока вариант не уточнён. Уточнение называется сужением типа:
Этому посвящено задание 21.
string | null).Во всех случаях union честнее, чем any: он описывает реальность и при этом заставляет обработать каждый вариант.