Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про TypeScript: type, predicate

Что такое предикаты типов в TypeScript?

Вопрос проверяет понимание механизмов сужения типов и повышения типобезопасности в TypeScript.

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

Предикаты типов — это функции, которые помогают TypeScript уточнять тип значения.
Они возвращают boolean, но имеют специальную сигнатуру.
Такие функции используются в условиях.
После проверки TypeScript «понимает», с каким типом мы работаем.

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

TypeScript умеет автоматически сужать типы, но иногда ему нужна подсказка от разработчика.

Определение

Предикат типов — это функция с возвращаемым типом вида value is Type, которая сообщает TypeScript, что значение относится к определённому типу.

Пример предиката

Рассмотрим проверку пользовательского типа:

function isString(value: unknown): value is string {
  return typeof value === 'string';
}

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

После использования такой функции:

  • TypeScript доверяет результату проверки

  • тип переменной сужается внутри блока

if (isString(data)) {
  // data имеет тип string
  data.toUpperCase();
}

Зачем это нужно

Предикаты типов полезны, когда:

  • работают с unknown

  • используют объединённые типы

  • пишут переиспользуемые проверки

  • валидируют данные из API

Отличие от обычных проверок

Обычная функция:

  • возвращает boolean

  • не влияет на тип

Предикат типов:

  • возвращает boolean

  • влияет на систему типов

Краткий вывод

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • TypeScript

    TypeScript

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

#type

#predicate

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