TypeScript's Discriminated Unions and How I Began to Worry Less