Back to questions
Junior — Middle
86
Чем отличаются типы any и unknown в TypeScript с точки зрения их использования и безопасности типов?
Answer from AI
sobes.tech AI
Тип any в TypeScript отключает проверку типов для переменной, позволяя присваивать ей значения любого типа и выполнять любые операции без ошибок компиляции. Это удобно, но снижает безопасность типов, так как ошибки могут проявиться только во время выполнения.
Тип unknown тоже может содержать значение любого типа, но с ним нельзя напрямую выполнять операции или присваивать другим типам без явной проверки или приведения типа. Это делает unknown более безопасным, так как заставляет разработчика явно обрабатывать тип данных перед использованием.
Пример:
let a: any = 5;
a = "строка"; // допустимо
let b: number = a; // тоже допустимо, но может привести к ошибке во время выполнения
let u: unknown = 5;
u = "строка";
// let c: number = u; // ошибка компиляции
if (typeof u === "number") {
let c: number = u; // безопасно
}
Итого, any — это "отключение" типизации, а unknown — безопасный аналог, требующий проверки типа перед использованием.