✅ any — “отключает” TypeScript
let value: any;
value = 123;
value = "hello";
value = { a: 1 };
Можно делать что угодно — без ошибок
-value.trim(); // OK, даже если это не строка
-value.nonExistent(); // OK, но ошибка только в runtime
- Использование any отключает проверку типов.
- TypeScript не будет ругаться, даже если вы делаете ерунду.
- Это удобно, но очень опасно — вы теряете всю пользу от TypeScript.
✅ unknown — то же, что any, но безопаснее
let value: unknown;
value = 123;
value = "hello";
value = { a: 1 };
Ошибка: нельзя просто так вызвать метод
value.trim(); // ❌ Ошибка: Object is of type 'unknown'
Надо сначала проверить
if (typeof value === "string") {
value.trim();
} // ✅ OK
- Тип unknown говорит: «Я не знаю, что это за тип, пока ты не проверишь».
- Это безопасная альтернатива any.
- Часто используется для данных извне (например, из API или JSON.parse()).
🧠 Какой использовать?
- Нужно временно отключить проверку (очень осторожно!) → any
- Получаете значение извне (API, пользовательский ввод и т.п.) → unknown
- Хотите сохранить безопасность и явную проверку типов → unknown

Anastasiia Berest
Senior Web UI Engineer