Why Discriminated Union Types are an important part of modeling solutions with TypeScript. Via thoughtbot blog