/** * Check the number of arguments on a function. * @see https://github.com/Microsoft/TypeScript/pull/21316#issuecomment-374191157 */ export type NumberOfArgs = T extends (a: infer A, b: infer B, c: infer C, d: infer D, e: infer E, f: infer F, g: infer G, h: infer H, i: infer I, j: infer J) => any ? ( IsValidArg extends true ? 10 : IsValidArg extends true ? 9 : IsValidArg extends true ? 8 : IsValidArg extends true ? 7 : IsValidArg extends true ? 6 : IsValidArg extends true ? 5 : IsValidArg extends true ? 4 : IsValidArg extends true ? 3 : IsValidArg extends true ? 2 : IsValidArg extends true ? 1 : 0 ) : 0;