Back to questions
Middle+
2
Что такое type guard в TypeScript?
Companies where asked
Ifellow
Answer from AI
sobes.tech AI
Type guard в TypeScript — это способ сузить тип переменной внутри условного блока, чтобы компилятор понимал, с каким конкретно типом мы работаем. Это позволяет безопасно обращаться к свойствам или методам, специфичным для этого типа.
Пример type guard с использованием оператора typeof:
function example(value: string | number) {
if (typeof value === "string") {
// Здесь value — string
console.log(value.toUpperCase());
} else {
// Здесь value — number
console.log(value.toFixed(2));
}
}
Также можно создавать пользовательские type guards — функции, которые возвращают value is Type:
type Fish = { swim: () => void };
type Bird = { fly: () => void };
function isFish(pet: Fish | Bird): pet is Fish {
return (pet as Fish).swim !== undefined;
}
function move(pet: Fish | Bird) {
if (isFish(pet)) {
pet.swim(); // TypeScript знает, что pet — Fish
} else {
pet.fly(); // pet — Bird
}
}
Таким образом, type guard помогает безопасно работать с объединениями типов и улучшает проверку типов во время компиляции.