Middle
Vazifa 7: Alien va Human turlari mavjud bo'lib, ular Person turiga birlashtirilgan. checkAlien funksiyasini yozing, bu funksiya berilgan Personning kosmonavchi yoki yo'qligini tekshiradi. isAlien xususiyatiga kirishda yuzaga keladigan TypeScript xatosini tuzat.
sobes.tech AI
AIdan javob
В TypeScript, если у вас есть объединённый тип Person, который может быть либо Alien, либо Human, и только у Alien есть свойство isAlien, то при обращении к isAlien напрямую у Person будет ошибка, так как у Human такого свойства нет.
Чтобы исправить ошибку, нужно использовать type guard — проверку, которая позволит компилятору понять, что объект действительно является Alien.
Пример:
type Alien = { isAlien: true; name: string };
type Human = { name: string };
type Person = Alien | Human;
function checkAlien(person: Person): boolean {
return 'isAlien' in person && person.isAlien === true;
}
Здесь мы используем оператор in для проверки наличия свойства isAlien. Это позволяет TypeScript сузить тип и избежать ошибки при обращении к person.isAlien.
Альтернативно, можно написать пользовательский type guard:
type Alien = { isAlien: true; name: string };
type Human = { name: string };
type Person = Alien | Human;
function isAlien(person: Person): person is Alien {
return (person as Alien).isAlien === true;
}
function checkAlien(person: Person): boolean {
return isAlien(person);
}
Такой подход улучшает читаемость и повторное использование проверки.