Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Тип Unknown Основы Typescript

Использование типа any в TypeScript отключает проверки типов, что не желательно. Также в наиболее строгом режиме с помощью "strict": true в tsconfig.json использование any невозможно. А это значительно повышает безопасность кода.

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

Использование типа unknown

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

let value: unknown = 'code-basics';

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

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

Переменная unknown типа нужна редко — когда нужно дальше уточнить тип. Но все меняется, когда нам нужно создать функцию, которая может работать с любым входящим типом. В 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): boolean {
  return value instanceof Error;
}

В итоге instanceof работает только с конструкторами, поэтому в примере выше мы проверяем, является ли значение экземпляром класса Error.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 2 мая
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 2 мая
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 2 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»