Skip to content

Commit b2caa3f

Browse files
authored
GreaterThanOrEqual / LessThan: Fix behavior with operands like N and N | N + >0 (#1280)
1 parent 5612f64 commit b2caa3f

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

source/greater-than-or-equal.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ GreaterThanOrEqual<1, 5>;
1919
*/
2020
export type GreaterThanOrEqual<A extends number, B extends number> = number extends A | B
2121
? never
22-
: A extends B ? true : GreaterThan<A, B>;
22+
: A extends number // For distributing `A`
23+
? B extends number // For distributing `B`
24+
? A extends B
25+
? true
26+
: GreaterThan<A, B>
27+
: never // Should never happen
28+
: never; // Should never happen
2329

2430
export {};

test-d/greater-than-or-equal.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ expectType<GreaterThanOrEqual<-16 | 16, 0>>({} as boolean);
2727
expectType<GreaterThanOrEqual<-4 | 45, 20 | 30>>({} as boolean);
2828
expectType<GreaterThanOrEqual<1 | -1 | 3, 0 | 2>>({} as boolean);
2929
expectType<GreaterThanOrEqual<1 | 2 | 3, 3 | 4>>({} as boolean);
30+
expectType<GreaterThanOrEqual<1, 1 | 2>>({} as boolean);
3031

3132
expectType<GreaterThanOrEqual<PositiveInfinity, -999>>(true);
3233
expectType<GreaterThanOrEqual<PositiveInfinity, 999>>(true);

test-d/less-than.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ expectType<LessThan<-10, -90 | 90>>({} as boolean);
2626
expectType<LessThan<-16 | 16, 0>>({} as boolean);
2727
expectType<LessThan<-4 | 45, 20 | 30>>({} as boolean);
2828
expectType<LessThan<1 | -1 | 3, 0 | 2>>({} as boolean);
29+
expectType<LessThan<1, 1 | 2>>({} as boolean);
2930

3031
expectType<LessThan<PositiveInfinity, -999>>(false);
3132
expectType<LessThan<PositiveInfinity, 999>>(false);

0 commit comments

Comments
 (0)