export type Intersection = [T] extends [U] ? T : [U] extends [T] ? U : T & U;