Вопрос проверяет понимание сужения типов (type narrowing) и безопасной работы с union-типами.
Type Guard — это проверка, которая позволяет TypeScript точно определить тип значения в конкретной ветке кода. Он используется при работе с union-типами, когда поведение зависит от реального типа данных. Type Guard делает код безопаснее и избавляет от лишних проверок и приведения типов. Он может быть встроенным или пользовательским.
Type Guard — это выражение или функция, которая сужает тип значения в определённой области видимости.
typeof
instanceof
Проверка по свойству
Пример:
function print(value: string | number) {
if (typeof value === 'string') {
value.toUpperCase();
}
}
type User = { name: string };
type Admin = { name: string; role: string };
function isAdmin(user: User | Admin): user is Admin {
return 'role' in user;
}
Использование:
if (isAdmin(u)) {
u.role;
}
Безопасная работа с union-типами
Читаемый код без as
Защита от runtime-ошибок
Type Guard — ключевой инструмент TypeScript для безопасной логики, когда тип значения определяется во время выполнения.