В чём разница между типами 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 — когда нужна максимальная гибкость и отключение проверки типов.