Вопрос проверяет понимание механизмов сужения типов и повышения типобезопасности в 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 для сложных проверок.