# PrivateIntRange

`type` in `services` · v0.8.2

<https://docs.seedcord.org/packages/services/0.8.2/types/private-int-range>

The actual implementation of `IntRange`. It's private because it has some arguments that don't need to be exposed.

## Declaration

```ts
type PrivateIntRange<Start extends number, End extends number, Step extends number, Gap extends number = Subtract<Step, 1>, List extends unknown[] = TupleOf<Start, never>, EndLengthTuple extends unknown[] = TupleOf<End>> = Gap extends 0 // Handle the case that without `Step` ? List['length'] extends End // The result of "List[length] === End" ? Exclude<List[number], never> // All unused elements are `never`, so exclude them : PrivateIntRange<Start, End, Step, Gap, [...List, List['length']]> // Handle the case that with `Step` : List extends [...(infer U), ...EndLengthTuple] // The result of "List[length] >= End", because the `...TupleOf<Gap, never>` maybe make `List` too long. ? Exclude<List[number], never> : PrivateIntRange<Start, End, Step, Gap, [...List, List['length'], ...TupleOf<Gap, never>]>
```
