Type Union
Implica que solo los métodos que sean iguales de ambas interfaces o clases (solamente el nombre del método sean iguales, el contenido puede ser distinto) podrán ser utilizados allí donde se utilicen métodos de unión como el siguiente ejemplo:
interface Bird {
fly();
layEggs(); // Los 2 pueden
}
interface Fish {
swim();
layEggs(); // Los 2 pueden
}
function getAnimal() : Fish | Bird {
var a : Fish;
return a;
}
let pet = getAnimal();
pet.layEggs(); // Esto funcionaría
pet.swim() // Esto da error