При обсуждении наиболее недооцененных функций TypeScript часто упускают из виду утверждение as const. Эта функция невероятно полезна в различных сценариях, предоставляя значительные преимущества разработчикам.
Для начала давайте определим, что делает const. Представьте, что у вас есть такой объект:
const routes = { home: "/home", profile: "/profile", notifications: "/notification", };
Если вы наведете курсор на свойства маршрутов, вы заметите, что они вводятся в виде строки. Например, Routes.home вводится как строка, а не «/home». Это связано с тем, что TypeScript предполагает, что эти свойства могут измениться, поэтому он рассматривает их как изменяемые строки.
Теперь рассмотрим функцию, которая должна принимать только эти конкретные маршруты. Вы можете определить типы следующим образом:
function changeRoute(route: "home" | "profile" | "notifications") { // navigate to route }
Этот подход работает, но он повторяется и подвержен ошибкам. Если вы добавляете новый маршрут, вам необходимо обновить определение типа функции, что не идеально.
Здесь в игру вступает const. Используя константу, вы можете сделать объект неизменяемым, и TypeScript будет выводить литеральные типы, а не просто строку.
const routes = { home: "/home", profile: "/profile", notifications: "/notification", } as const;
Теперь Routes.home вводится как «/home», Routes.notifications — как «/notifications» и так далее. Эта неизменность гарантирует, что эти свойства не могут быть изменены, и TypeScript распознает их конкретные значения.
Давайте интегрируем как константу в функцию:
function changeRoute(route: typeof routes[keyof typeof routes]) { // navigate to route }
Здесь typeof Routes получает тип объекта маршрутов, а keyof typeof Routes извлекает ключи, в результате чего получаются точные типы значений маршрута. Это делает функцию адаптируемой к любым изменениям в объекте маршрутов без необходимости повторяющихся обновлений.
Еще один мощный аспект as const — то, как он позволяет извлекать типы. Например:
type Routes = (typeof routes)[keyof typeof routes];
Определение этого типа динамически извлекает значения объекта маршрутов, что делает функцию более удобной в обслуживании и уменьшает избыточность.
Утверждение as const в TypeScript — это универсальная и мощная функция, которая может значительно повысить безопасность типов и уменьшить избыточность в вашем коде. Делая объекты неизменяемыми и обеспечивая точный вывод типов, это упрощает поддержку и расширение кодовых баз. Попробуйте, и вы увидите, как он может улучшить ваши проекты TypeScript!
Приятного кодирования!
[Раскрытие информации: эта статья является результатом совместной работы, в которой мои собственные идеи объединены с помощью ChatGPT для улучшения артикуляции.]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3