Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: TypeScript, unknown, error handling, type narrowing, type guard

Как обрабатывать неизвестный тип ошибки (unknown) в TypeScript?

Проверяет умение обрабатывать ошибки с типом unknown в TypeScript для обеспечения типобезопасности.

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

Тип unknown в TypeScript представляет значение, тип которого неизвестен. Для обработки ошибки с типом unknown необходимо сначала сузить его тип с помощью проверок, например, instanceof или typeof. Это гарантирует безопасный доступ к свойствам ошибки. Без сужения типа компилятор не позволит выполнять операции с unknown.

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

Что такое unknown и зачем он нужен?

В TypeScript тип unknown является типобезопасной альтернативой any. Он представляет значение, тип которого неизвестен на момент написания кода. В отличие от any, с unknown нельзя выполнять произвольные операции без предварительной проверки типа. Это особенно полезно при обработке ошибок в блоке catch, где по умолчанию ошибка имеет тип unknown (начиная с TypeScript 4.0).

Как обрабатывать unknown ошибку?

Для работы с unknown необходимо сузить его тип. Самый распространенный способ — использовать проверку instanceof Error. Если ошибка является экземпляром класса Error, можно безопасно получить доступ к свойствам message, name и stack. Если тип ошибки неизвестен, можно проверить, является ли она объектом с полем message.

try {
  // код, который может выбросить ошибку
} catch (error: unknown) {
  if (error instanceof Error) {
    console.log(error.message);
  } else if (typeof error === 'string') {
    console.log(error);
  } else if (error && typeof error === 'object' && 'message' in error) {
    console.log((error as { message: string }).message);
  } else {
    console.log('Неизвестная ошибка');
  }
}

Практические рекомендации

  • Всегда используйте unknown вместо any в блоке catch для повышения типобезопасности.
  • Создайте пользовательскую функцию-гард для проверки структуры ошибки, если она имеет сложную форму.
  • Избегайте приведения типа через as any — это снижает безопасность.

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • TypeScript

    TypeScript

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

#TypeScript

#unknown

#error handling

#type narrowing

#type guard

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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