export type KeysMatching = { [K in keyof T]-?: T[K] extends V ? K : never; }[keyof T]; export type Require = Omit & Required>; export type AnyCase = string extends T ? string : T extends `${infer F1}${infer F2}${infer R}` ? (`${Uppercase | Lowercase}${Uppercase | Lowercase}${AnyCase}`) : T extends `${infer F}${infer R}` ? `${Uppercase | Lowercase}${AnyCase}` : ''; export type NumberRange = (Result['length'] extends M ? [...Result, M] : NumberRange); export type MaybeArray = T | T[]; export type Simplify = { [K in keyof T]: T[K]; } & {}; export type Equals = (() => G extends T ? 1 : 2) extends (() => G extends U ? 1 : 2) ? true : false;