Coggle requires JavaScript to display documents.
function getSpeed(animal: Animal) { switch (animal.type) { case 'bird': return animal.flyingSpeed; case 'horse': return animal.runningSpeed; case 'cow': return animal.walkingSpeed; default: return 0; // We should never make it here! } }
interface Bird { type: 'bird'; flyingSpeed: number; } interface Horse { type: 'horse'; runningSpeed: number; } interface Cow { type: 'cow'; walkingSpeed: number; } type Animal = Bird | Horse | Cow;
never
function generateError(message: string, code: number): never { throw { message: message, errorCode: code } }
Animal
> Type 'Rabbit' is not assignable to type 'never'
function getSpeed(animal: Animal) { switch (animal.type) { case 'bird': ... default: // We should never make it here! const unhandledType: never = animal; return unhandledType; } }
function getSpeed(animal: Animal) { switch (animal.type) { case 'bird': ... case 'rabbit': return animal.hoppingSpeed; default: // We should never make it here! const unhandledType: never = animal; return unhandledType; } }
number
type Animal = Bird | Horse | Cow | Rabbit;