TypeScript has a feature called conditional types
type Foo = Dog extends Animal ? number : string;
Are the