type WithoutFirst = ((...test: T) => void) extends ((away: unknown, ...rest: infer R) => void) ? R : never; type GetLength = original extends { length: infer L; } ? L : never; export type LastIndex = GetLength extends 1 ? 0 : GetLength>; type UnshiftOne = [1, ...A]; type Make = A["length"] extends L ? A : A["length"] extends 200 ? never : Make, L>; export type MinusOne = LastIndex>; export type PlusOne = GetLength>>; export {};