Sobes.tech
Назад к вопросам
Middle+
1

Что такое type guard в TypeScript?

Компании, где спрашивали
Ifellow

Ответ от нейросети

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 помогает безопасно работать с объединениями типов и улучшает проверку типов во время компиляции.