Middle
Compito 7: Ci sono i tipi Alien e Human, combinati nel tipo Person. Scrivi una funzione checkAlien che verifica se la Person passata è un alieno. Correggi l'errore di TypeScript nell'accesso alla proprietà isAlien.
sobes.tech AI
Risposta dell'AI
В 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);
}
Такой подход улучшает читаемость и повторное использование проверки.