Type alias PositiveRange<N, M>

PositiveRange<N, M>: [IsPositiveInteger<N>, IsPositiveInteger<M>] extends [true, true]
    ? N extends M
        ? N
        : M extends N
            ? M
            : number extends N | M
                ? number
                : _BuildRange<N, M, []>
    : never

Represents a range of positive integers from N to M (inclusive). Both bounds must be positive integers.

Type Parameters

  • N extends number

    Lower bound (must be positive integer)

  • M extends number

    Upper bound (must be positive integer)

Example

// Pagination example with a maximum of 100 items per page
interface PaginationParams {
page: number;
itemsPerPage: PositiveRange<1, 100>;
}

async function fetchUsers({ page, itemsPerPage }: PaginationParams) {
const offset = (page - 1) * itemsPerPage;
return await db.users.findMany({
skip: offset,
take: itemsPerPage,
});
}

// Valid usage:
fetchUsers({ page: 1, itemsPerPage: 50 }); // ✅ OK

// Type errors:
fetchUsers({ page: 1, itemsPerPage: 200 }); // ❌ Error: 200 exceeds maximum of 100
fetchUsers({ page: 1, itemsPerPage: 0 }); // ❌ Error: 0 is not in range