Middle
Gibt es eine Variable, die vom Typ Book oder Video sein kann? Wie überprüft man den Objekttyp? Welchen Typ gibt die Type-Guard-Funktion zurück?
sobes.tech KI
Antwort von 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, что позволяет компилятору сузить тип внутри условного блока.