diff --git a/maximum.ts b/maximum.ts new file mode 100644 index 0000000..409e01c --- /dev/null +++ b/maximum.ts @@ -0,0 +1,32 @@ +import type { Equal, Expect } from '@type-challenges/utils' + +type cases = [ + Expect, never>>, + Expect, 2>>, + Expect, 200>>, +] + +type Max< + T extends number, + U extends number, + Acc extends 1[] = [] +> = +Acc['length'] extends T + ? U + : Acc['length'] extends U + ? T + : Max + +type Maximum< + T extends unknown[] +> = +T extends [infer First, infer Second, ...infer Tail] + ? First extends number + ? Second extends number + ? Maximum<[Max, ...Tail]> + : never + : never + : T extends [infer Head, ...infer Tail] + ? T[0] + : never +;