Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
21.6K subscribers
2.9K photos
208 videos
48 files
5.2K links
Все самое полезное для фронтенда в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/77178ed4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
🔥 Каверзный вопрос с собеса по TypeScript

Типы any и unknown часто путают, но они работают совершенно по-разному!

🔍 Что происходит на самом деле:

any — «отключает» TypeScript


let value1: any = "hello";
value1.toUpperCase(); // TS не проверяет
value1.someMethod(); // TS разрешает всё
value1.foo.bar.baz; // Никаких проверок


TypeScript полностью доверяет вам и не проводит никаких проверок
Это как "аварийный выход" из системы типов

unknown — «безопасный any»


let value2: unknown = "hello";
value2.toUpperCase(); // Ошибка компиляции!

// Нужна проверка типа:
if (typeof value2 === 'string') {
value2.toUpperCase(); // Теперь работает
}


TypeScript требует явной проверки типа перед использованием
Это безопасный способ работы с неизвестными данными

🎯 Когда использовать:

any — когда:
— Мигрируете JS → TS постепенно
— Работаете с legacy-кодом
— Но помните: это технический долг!

unknown — когда:
— Парсите JSON с бэкенда
— Работаете с пользовательским вводом
— Получаете данные из внешних API
— Обрабатываете ошибки в catch

Best practice:


// Плохо
function parseResponse(response: any) {
return response.data.user.name;
}

// Хорошо
function parseResponse(response: unknown) {
if (
response &&
typeof response === 'object' &&
'data' in response
) {
// Type guard для безопасной работы
return (response as {data: {user: {name: string}}}).data.user.name;
}
throw new Error('Invalid response');
}


❗️ unknown заставляет вас думать о безопасности типов, any — отключает эту защиту.

🐸 Библиотека фронтендера

#career_merge #ts #middle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤‍🔥4🥰4