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…
Reference in new issue