[имя] спросил(а): что такое type guard в TypeScript? Как написать функцию-type guard?

Чтобы проверить тип объекта, который может быть Book или Video, в TypeScript используют type guard — функцию, которая проверяет тип и сообщает компилятору о результате.

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

Что ответить на собеседовании

Чтобы проверить тип объекта, который может быть Book или Video, в TypeScript используют type guard — функцию, которая проверяет тип и сообщает компилятору о результате.

Подробный разбор

Ответ с пояснениями

Чтобы проверить тип объекта, который может быть Book или Video, в TypeScript используют type guard — функцию, которая проверяет тип и сообщает компилятору о результате.

Пример:

interface Book {
  title: string;
  author: string;
  pages: number;
}

interface Video {
  title: string;
  duration: number;
  format: string;
}

function isBook(obj: Book | Video): obj is Book {
  return (obj as Book).pages !== undefined;
}

const item: Book | Video = getItem();

if (isBook(item)) {
  // Здесь TypeScript знает, что item — это Book
  console.log(item.author);
} else {
  // Здесь item — Video
  console.log(item.duration);
}

Функция isBook возвращает тип-предикат obj is Book, что позволяет компилятору сузить тип внутри условного блока.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее