Back to Blog

Разница между any и unknown в TypeScript

Anastasiia Berest 4 min read

✅ 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

Anastasiia Berest

Senior Web UI Engineer

Разница между any и unknown в TypeScript