Оба могут хранить любое значение, но отличаются безопасностью. any отключает проверку типов; unknown её включает и заставляет сужать тип перед использованием.
ts
: = ;
a..;
();
: = ;
u.();
();
Оба могут хранить любое значение, но отличаются безопасностью. any отключает проверку типов; unknown её включает и заставляет сужать тип перед использованием.
: = ;
a..;
();
: = ;
u.();
();
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержатьfunction handle(input: unknown) {
if (typeof input === "string") {
input.toUpperCase(); // ✅ inside the guard, TS knows it's a string
}
}
unknown — type-safe аналог any: вы можете присвоить ему что угодно, но не можете ничего с ним делать, пока не докажете, что это такое, через type guard.
unknown — для значений действительно неизвестного типа на границе: результаты JSON.parse, ответы API, catch (e: unknown). Требует валидации.any — люк для выхода при миграции JS или когда вы действительно не можете что-то типизировать. Используйте редко; распространяется незаметно и отключает безопасность.Обращение к any противоречит целям TypeScript.
Предпочитайте unknown на нетипизированных границах — это сохраняет гарантии компилятора, при этом допуская произвольный ввод и заставляя вас валидировать данные перед их использованием.