Sobes.tech
Назад к вопросам
Senior
4

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

Компании, где спрашивали
АЛМИ Партнер

Ответ от нейросети

sobes.tech AI

В TypeScript типы any и unknown служат для представления значений с неизвестным типом, но между ними есть важные различия:

  • any отключает проверку типов. Переменная с типом any может быть присвоена любому значению, и с ней можно выполнять любые операции без ошибок компиляции. Это снижает безопасность типов.

  • unknown — более безопасный аналог any. Значение типа unknown можно присвоить любой переменной, но чтобы использовать его, нужно сначала выполнить проверку типа или привести к конкретному типу. Это заставляет разработчика явно обрабатывать возможные варианты, повышая надежность кода.

Пример:

let a: any = 10;
let u: unknown = 10;

let s: string;

s = a; // ОК, компилятор не ругается

s = u; // Ошибка: нельзя присвоить unknown напрямую

if (typeof u === 'string') {
  s = u; // ОК, после проверки типа
}

Итого, unknown рекомендуется использовать, когда нужно работать с неизвестными данными, сохраняя безопасность типов, а any — когда нужна максимальная гибкость и отключение проверки типов.