type Size = 'large'; type Position = | 'label-right' | 'label-left' | 'label-right--large' | 'label-left--large'; type ModifierCombination = [Size, Position?] | [Position, Size?]; type SwitchModifierConfig = { 'o-switch': ModifierCombination; }; export type SwitchModifier = { [P in keyof SwitchModifierConfig]: { prefix: P; modifiers: SwitchModifierConfig[P]; }; }[keyof SwitchModifierConfig]; export type ModifierItems = SwitchModifier[] | ModifierCombination;