Recently, I had to convert a union type into an intersection type. Working on a helper type UnionToIntersection<T> has taught me a ton of things on conditional types and strict function types, which I want to share with you.
I really like working with non-discriminated union types when I try to model a type where at least one property needs to be set, making all other properties optional. Like in this example: