Exclude
Takes stuff out of a union. It's built into TypeScript, but
here is also what it would look like if you wanted to
implement it yourself.
type Exclude = T extends U ? never : T;
// %inferred-type: 1 | 3
type Result0 = Exclude<1 | 2 | 3, 2>;
// %inferred-type: "a" | "b"
type Result1 = Exclude<1 | 'a' | 2 | 'b', number>;
// %inferred-type: "a" | 2
type Result2 = Exclude<1 | 'a' | 2 | 'b', 1 | 'b' | 'c'>;