Типы
any и unknown часто путают, но они работают совершенно по-разному!any — «отключает» TypeScript
let value1: any = "hello";
value1.toUpperCase(); // TS не проверяет
value1.someMethod(); // TS разрешает всё
value1.foo.bar.baz; // Никаких проверок
unknown — «безопасный any»
let value2: unknown = "hello";
value2.toUpperCase(); // Ошибка компиляции!
// Нужна проверка типа:
if (typeof value2 === 'string') {
value2.toUpperCase(); // Теперь работает
}
any — когда:
— Мигрируете JS → TS постепенно
— Работаете с legacy-кодом
— Но помните: это технический долг!
unknown — когда:
— Парсите JSON с бэкенда
— Работаете с пользовательским вводом
— Получаете данные из внешних API
— Обрабатываете ошибки в catch
// Плохо
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