Middle
¿Hay una variable que puede ser de tipo Book o Video? ¿Cómo verificar el tipo del objeto? ¿Qué tipo devuelve la función de protección de tipo?
sobes.tech AI
Respuesta de la IA
Чтобы проверить тип объекта, который может быть 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, что позволяет компилятору сузить тип внутри условного блока.