Skip to content

Latest commit

 

History

History
47 lines (33 loc) · 1.03 KB

03.DiscriminatedUnios.md

File metadata and controls

47 lines (33 loc) · 1.03 KB

Discriminated Unions (Union discriminada)

← 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