← Volver a la tabla de contenido |
---|
Es un patron util al trabajar con Union Types que facilita la implementación de los Type Guards
Para usar estas Discriminated Unions hay que darle a cada interface una propiedad extra que puede recibir cualquier nombre (type en este caso), y se le asigna un tipo literal
interface Bird {
type: 'bird'
flyingSpeed: number;
}
interface Horse {
type: 'horse'
runningSpeed: number;
}
type Animal = Bird | Horse;
function moveAnimal(animal: Animal){
let speed;
switch(animal.type) {
case 'bird':
speed = animal.flyingSpeed;
break;
case 'horse':
speed = animal.runningSpeed
break;
}
console.log(`moving with speed ${speed}`)
}
moveAnimal({type:'bird', flyingSpeed:10})
this can be used in classes as well
← Volver a la tabla de contenido |
---|