export type BuildRange< Start extends number, End extends number, Acc extends number[] = [], > = Acc["length"] extends End ? Acc[number] : BuildRange; export type Range = Exclude< BuildRange<0, End>, BuildRange<0, Start> >; export type BuildTuple = R["length"] extends N ? R : BuildTuple; export type Add = [ ...BuildTuple, ...BuildTuple, ]["length"]; export type Subtract = BuildTuple extends [...BuildTuple, ...infer R] ? R["length"] : never; export type AnyNumber = number & {};