Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
typeof ROUTES даёт тип объекта, keyof превращает его в "home" | "profile". Добавишь в ROUTES новый маршрут, и он автоматически появится в Route.
На ключи as const не влияет: keyof typeof ROUTES дал бы "home" | "profile" и без него. Он нужен для значений. Без as const тип объекта такой:
а с ним:
Теперь можно получить и тип всех путей, и проверять их так же строго, как ключи:
Заодно объект стал readonly, и случайно переписать маршрут в коде не получится.
В JavaScript typeof x возвращает строку вроде "object". В TypeScript в позиции типа, после двоеточия или в type ... =, typeof означает «тип этой переменной». Это разные операторы с одним именем, и какой из них работает, определяется местом в коде.
Если хочется и проверить объект по форме, и не потерять литералы, as const сочетают с satisfies:
Опечатка вроде profile: "me" сразу станет ошибкой, а типы значений останутся точными.