prefer-type-fest-less-than-or-equal
Require TypeFest LessThanOrEqual<A, B> over boolean wrappers built from GreaterThan<A, B>.
Targeted pattern scopeโ
This rule targets equivalent conditional wrappers such as GreaterThan<A, B> extends true ? false : true and infer-wrapped variants.
What this rule reportsโ
- Conditional types equivalent to
LessThanOrEqual<A, B>that are composed fromGreaterThan<A, B>.
Why this rule existsโ
LessThanOrEqual is the canonical TypeFest numeric comparison helper for <= checks. Using it directly improves readability and avoids repeated wrapper patterns.
โ Incorrectโ
import type { GreaterThan } from "type-fest";
type IsLessOrEqual = GreaterThan<1, 2> extends true ? false : true;
โ Correctโ
import type { LessThanOrEqual } from "type-fest";
type IsLessOrEqual = LessThanOrEqual<1, 2>;
Behavior and migration notesโ
- This rule targets wrappers equivalent to
LessThanOrEqual<A, B>. - It handles direct and infer-wrapped conditional forms.
- It does not report wrappers whose boolean branches do not match
<=semantics.
Additional examplesโ
โ Incorrect โ Additional exampleโ
import type { GreaterThan } from "type-fest";
type IsLessOrEqual =
GreaterThan<4, 9> extends infer Result
? Result extends true
? false
: true
: never;
โ Correct โ Additional exampleโ
import type { LessThanOrEqual } from "type-fest";
type IsLessOrEqual = LessThanOrEqual<4, 9>;
โ Correct โ Repository-wide usageโ
type IsNonPositive<N extends number> = LessThanOrEqual<N, 0>;
ESLint flat config exampleโ
import typefest from "eslint-plugin-typefest";
export default [
{
plugins: { typefest },
rules: {
"typefest/prefer-type-fest-less-than-or-equal": "error",
},
},
];
When not to use itโ
Disable this rule if your codebase intentionally standardizes on custom numeric wrapper types.
Package documentationโ
TypeFest package documentation:
Source file: source/less-than-or-equal.d.ts
/**
Returns a boolean for whether a given number is less than or equal to another number.
*/
export type LessThanOrEqual<A extends number, B extends number> = ...
Rule catalog ID: R085