add maximum

main
Kimi Löffel 3 years ago
parent 01c7adf20b
commit b0621f7c43

@ -0,0 +1,32 @@
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<Maximum<[]>, never>>,
Expect<Equal<Maximum<[0, 2, 1]>, 2>>,
Expect<Equal<Maximum<[1, 20, 200, 150]>, 200>>,
]
type Max<
T extends number,
U extends number,
Acc extends 1[] = []
> =
Acc['length'] extends T
? U
: Acc['length'] extends U
? T
: Max<T, U, [...Acc, 1]>
type Maximum<
T extends unknown[]
> =
T extends [infer First, infer Second, ...infer Tail]
? First extends number
? Second extends number
? Maximum<[Max<First, Second>, ...Tail]>
: never
: never
: T extends [infer Head, ...infer Tail]
? T[0]
: never
;
Loading…
Cancel
Save