логотип PurpleSchool
логотип PurpleSchool

Как правильно использовать тип Unknown

Автор

Василий Майоров

Тип any (любой) — это тип в TypeScript, подходящий к чему угодно. Поскольку он охватывает типы всех возможных значений, то не заставляет нас делать какие-либо проверки, прежде чем мы попытаемся эти значения вызывать, конструировать или получать доступ к их свойствам. Он также позволяет присвоить значения типа any переменным, которые ожидают значений любого другого типа.

Эта возможность в целом полезна, но не может обеспечить достаточную строгость.

Главное отличие unknown от any связано с проверкой типов. unknown запрещает выполнять любые операции:

let value: unknown = "code-basics";

value.toUpperCase(); // Error!
value.trim(); // Error!

Тип unknown в TypeScript представляет собой типизированный аналог any, требующий явной проверки типа перед использованием значения. Понимание правильного использования unknown позволяет создавать более безопасный и надежный код. Если вы хотите узнать больше о unknown и других продвинутых типах — приходите на наш большой курс TypeScript с нуля. На курсе 192 уроков и 17 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Может показаться странным, что перед нами строка, но над ней нельзя выполнять строковые операции. К этому надо привыкнуть. Тип в статически типизированных языках определяется не тем, что мы видим своими глазами, а тем, как тип выводится (автоматически или через явное указание)

Пример выше на практике смысла не имеет, но все меняется, когда нам приходится создавать функцию, которая может работать с любым входящим типом. В JavaScript подобная практика достаточно распространена:

// Пример из lodash
_.isError(new Error()); // true
_.isError(Error); // false
_.isError("code-basics"); // false

Подобную функцию можно реализовать с помощью any, но тогда придется быть очень аккуратным внутри и надеяться только на себя.

function isError(value: any);

Лучше использовать unknown, тогда TypeScript защитит от потенциальных ошибок типов:

function isError(value: unknown);

Затем, уже внутри тела можно выполнить нужную проверку, чтобы узнать с чем мы имеем дело:

function isError(value: unknown) {
  return value instanceof Error;
}

Тип unknown – это один из важных элементов системы типов TypeScript. Полное понимание приходит с опытом и изучением других аспектов типизации. Углубите свои знания на нашем курсе TypeScript с нуля. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в TypeScript прямо сегодня.

Использование Union в TypeScriptСтрелочка вправо

Постройте личный план изучения Typescript до уровня Middle — бесплатно!

Typescript — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Typescript

Открыть базу знаний

Лучшие курсы по теме

изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

CSS Flexbox

Антон Ларичев
Гарантия
Бонусы
иконка звёздочки рейтинга4.9
бесплатно
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий