В чём разница между типами unknown и any в TypeScript?

Безопасность типов в TypeScript any полностью отключает контроль типов unknown нельзя использовать без предварительной проверки С типом any любые операции выполняются без ошибок типизации Для unknown нужны явное…

Короткий ответ

Что ответить на собеседовании

Безопасность типов в TypeScript any полностью отключает контроль типов unknown нельзя использовать без предварительной проверки С типом any любые операции выполняются без ошибок типизации Для unknown нужны явное приведение или проверка типа unknown лучше защищает от ошибок на этапе компиляции Применение: any удобен для быстрого прототипирования, а unknown — для строгой проверки данных

Подробный разбор

Ответ с пояснениями

В чём разница между типами unknown и any в TypeScript?

  • Безопасность типов в TypeScript
  • any полностью отключает контроль типов
  • unknown нельзя использовать без предварительной проверки
  • С типом any любые операции выполняются без ошибок типизации
  • Для unknown нужны явное приведение или проверка типа
  • unknown лучше защищает от ошибок на этапе компиляции
  • Применение: any удобен для быстрого прототипирования, а unknown — для строгой проверки данных

Развёрнутый ответ

Краткий ответ

Тип unknown в TypeScript представляет собой безопасную альтернативу типу any. Он используется для значений, тип которых заранее неизвестен, однако перед обращением к ним необходимо явно подтвердить тип. В отличие от any, значение unknown нельзя напрямую передавать в операции или использовать для доступа к свойствам без предварительной проверки. Это снижает вероятность ошибок во время выполнения.

Тип any фактически отключает типизацию: компилятор не проверяет операции с таким значением и не выдаёт ошибки, что делает код менее безопасным.

Основные различия

  • Безопасность типов: при использовании unknown компилятор требует проверить значение или выполнить приведение типа до его использования. Для any подобных ограничений нет.
  • Сценарии применения: any может быть удобен при быстром создании прототипа или там, где строгая типизация несущественна. unknown предпочтителен для данных из ненадёжных источников, например полученных через API, когда необходимо сохранить типовую безопасность.
  • Совместимость: unknown строже, но совместим с any. Присвоить значение типа any переменной типа unknown можно, а обратное присваивание допускается только при явном приведении.

Практическое применение

В прикладных проектах на TypeScript 4+ обычно советуют по возможности не использовать any, выбирая вместо него unknown для значений с динамическим типом. Такой подход помогает сократить число ошибок во время выполнения и делает статический анализ эффективнее, например при обработке JSON-ответов API или взаимодействии с внешними плагинами.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку