Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: TypeScript, type assertion, type safety, unknown, type casting

Почему не стоит делать as unknown as Type?

Проверяет понимание опасности двойного приведения типов через unknown в TypeScript и его влияния на безопасность типов.

Короткий ответ

Конструкция as unknown as Type позволяет обойти систему типов TypeScript, что может привести к ошибкам во время выполнения. Она стирает информацию о типе и делает код менее предсказуемым. Вместо этого стоит использовать правильные проверки типов или утверждения с сужением типа.

Длинный ответ

Почему as unknown as Type — это плохая практика

Конструкция as unknown as Type в TypeScript позволяет принудительно привести любое значение к любому типу, полностью игнорируя систему типов. Это похоже на использование any, но с ложным ощущением безопасности, так как итоговый тип указан явно.

Как это работает

Сначала значение приводится к unknown — самому безопасному типу, который запрещает любые операции. Затем сразу же приводится к нужному типу Type. Компилятор не проверяет, совместимы ли исходный и конечный типы, поэтому ошибка может проявиться только в рантайме.

const data: unknown = JSON.parse('{"name": "Alice"}');

// Опасное приведение
const user = data as unknown as { name: string; age: number };
console.log(user.age); // undefined, но TypeScript думает, что это number

// Правильный подход — проверка
if (typeof data === 'object' && data !== null && 'name' in data) {
  const safeUser = data as { name: string };
  console.log(safeUser.name);
}

Когда это может быть оправдано

В редких случаях, например, при работе с внешними данными, когда тип гарантированно известен, но не может быть выражен в TypeScript. Однако даже тогда лучше использовать валидацию схем (например, Zod или io-ts).

Вывод

Избегайте as unknown as Type в production-коде. Всегда стремитесь к проверке типов во время выполнения или используйте утверждения с сужением типа, чтобы сохранить безопасность и читаемость.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • TypeScript

    TypeScript

Ключевые слова

#TypeScript

#type assertion

#type safety

#unknown

#type casting

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию