interface NamedAnimal { name: string; } interface Fish extends NamedAnimal { type: \'fish\'; water: \'fresh\' | \'salt