SetIntersection
SetIntersection (same as Extract)
@example
// Expect: "2" | "3"
SetIntersection<'1' | '2' | '3', '2' | '3' | '4'>;
// Expect: () => void
SetIntersection<string | number | (() => void), Function>;
type SetIntersection<A, B> = A extends B ? A : never;