Array of types to find common properties for
Default type for empty arrays (default: {})
interface Cat { name: string; type: 'cat'; active: true; priority: 1; }
interface Dog { name: string; type: 'dog'; active: false; priority: 2; }
interface Bird { name: string; type: 'bird'; active: true; priority: 3; }
type Result = CommonUpcastProps<[Cat, Dog, Bird]>;
// { name: string; type: string; active: boolean; priority: number }
// All literals are upcast to their primitive base types
Finds common properties across multiple types with primitive literal upcasting.
Recursively processes an array of types, applying upcast matching rules. Properties are included if they exist in all types and can be unified through upcasting.