Middle
Czy istnieje zmienna, która może być typu Book lub Video? Jak sprawdzić typ obiektu? Jaki typ zwraca funkcja typu guard?
sobes.tech AI
Odpowiedź od AI
Чтобы проверить тип объекта, который может быть 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, что позволяет компилятору сузить тип внутри условного блока.