@@ -21,31 +21,36 @@ GreaterThan<1, 5>;
21
21
//=> false
22
22
```
23
23
*/
24
- export type GreaterThan < A extends number , B extends number > = number extends A | B
25
- ? never
26
- : [
27
- IsEqual < A , PositiveInfinity > , IsEqual < A , NegativeInfinity > ,
28
- IsEqual < B , PositiveInfinity > , IsEqual < B , NegativeInfinity > ,
29
- ] extends infer R extends [ boolean , boolean , boolean , boolean ]
30
- ? Or <
31
- And < IsEqual < R [ 0 ] , true > , IsEqual < R [ 2 ] , false > > ,
32
- And < IsEqual < R [ 3 ] , true > , IsEqual < R [ 1 ] , false > >
33
- > extends true
34
- ? true
35
- : Or <
36
- And < IsEqual < R [ 1 ] , true > , IsEqual < R [ 3 ] , false > > ,
37
- And < IsEqual < R [ 2 ] , true > , IsEqual < R [ 0 ] , false > >
38
- > extends true
39
- ? false
40
- : true extends R [ number ]
41
- ? false
42
- : [ IsNegative < A > , IsNegative < B > ] extends infer R extends [ boolean , boolean ]
43
- ? [ true , false ] extends R
24
+ export type GreaterThan < A extends number , B extends number > =
25
+ A extends number // For distributing `A`
26
+ ? B extends number // For distributing `B`
27
+ ? number extends A | B
28
+ ? never
29
+ : [
30
+ IsEqual < A , PositiveInfinity > , IsEqual < A , NegativeInfinity > ,
31
+ IsEqual < B , PositiveInfinity > , IsEqual < B , NegativeInfinity > ,
32
+ ] extends infer R extends [ boolean , boolean , boolean , boolean ]
33
+ ? Or <
34
+ And < IsEqual < R [ 0 ] , true > , IsEqual < R [ 2 ] , false > > ,
35
+ And < IsEqual < R [ 3 ] , true > , IsEqual < R [ 1 ] , false > >
36
+ > extends true
37
+ ? true
38
+ : Or <
39
+ And < IsEqual < R [ 1 ] , true > , IsEqual < R [ 3 ] , false > > ,
40
+ And < IsEqual < R [ 2 ] , true > , IsEqual < R [ 0 ] , false > >
41
+ > extends true
44
42
? false
45
- : [ false , true ] extends R
46
- ? true
47
- : [ false , false ] extends R
48
- ? PositiveNumericStringGt < `${A } `, `${B } `>
49
- : PositiveNumericStringGt < `${NumberAbsolute < B > } `, `${NumberAbsolute < A > } `>
50
- : never
51
- : never ;
43
+ : true extends R [ number ]
44
+ ? false
45
+ : [ IsNegative < A > , IsNegative < B > ] extends infer R extends [ boolean , boolean ]
46
+ ? [ true , false ] extends R
47
+ ? false
48
+ : [ false , true ] extends R
49
+ ? true
50
+ : [ false , false ] extends R
51
+ ? PositiveNumericStringGt < `${A } `, `${B } `>
52
+ : PositiveNumericStringGt < `${NumberAbsolute < B > } `, `${NumberAbsolute < A > } `>
53
+ : never
54
+ : never
55
+ : never // Should never happen
56
+ : never ; // Should never happen
0 commit comments