Skip to content

Commit 77b20e3

Browse files
committed
fix: GreaterThan behavior with number type
1 parent 8e9af4c commit 77b20e3

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

source/greater-than.d.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,26 @@ type B = GreaterThan<1, 1>;
2020
type C = GreaterThan<1, 5>;
2121
//=> false
2222
```
23+
24+
Note: If either argument is the non-literal `number` type, the result is `boolean`.
25+
```
26+
import type {GreaterThan} from 'type-fest';
27+
28+
type A = GreaterThan<number, 1>;
29+
//=> boolean
30+
31+
type B = GreaterThan<1, number>;
32+
//=> boolean
33+
34+
type C = GreaterThan<number, number>;
35+
//=> boolean
36+
```
2337
*/
2438
export type GreaterThan<A extends number, B extends number> =
2539
A extends number // For distributing `A`
2640
? B extends number // For distributing `B`
2741
? number extends A | B
28-
? never
42+
? boolean
2943
: [
3044
IsEqual<A, PositiveInfinity>, IsEqual<A, NegativeInfinity>,
3145
IsEqual<B, PositiveInfinity>, IsEqual<B, NegativeInfinity>,

test-d/greater-than.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ expectType<GreaterThan<10, -2>>(true);
1111
expectType<GreaterThan<2, 2>>(false);
1212
expectType<GreaterThan<-2, -2>>(false);
1313
expectType<GreaterThan<-2, -3>>(true);
14-
expectType<GreaterThan<-2, number>>(never);
1514

1615
// === unions ===
1716
expectType<GreaterThan<100 | 200, 50>>(true);
@@ -35,3 +34,8 @@ expectType<GreaterThan<-999, NegativeInfinity>>(true);
3534
expectType<GreaterThan<PositiveInfinity, PositiveInfinity>>(false);
3635
expectType<GreaterThan<NegativeInfinity, NegativeInfinity>>(false);
3736
expectType<GreaterThan<PositiveInfinity, NegativeInfinity>>(true);
37+
38+
// Non-literal `number`
39+
expectType<GreaterThan<number, number>>({} as boolean);
40+
expectType<GreaterThan<number, 1>>({} as boolean);
41+
expectType<GreaterThan<1, number>>({} as boolean);

0 commit comments

Comments
 (0)