Type alias Range<start, end, step>

Range<start, end, step>: If_Gt<start, end> extends true
    ? never
    : NumPosInfo<_GetRangeCount<start, end, step>> extends [infer hundred extends number, infer ten extends number, infer unit extends number]
        ? _Range_Key_Num<start, step, hundred, ten> extends [infer n1 extends number, infer n2 extends number]
            ? (hundred extends 0
                ? never
                : _Range_Hundred<start, Sub<n1, step>, step>) | (ten extends 0
                ? never
                : _Range_Ten<n1, Sub<n2, step>, step>) | (unit extends 0
                ? never
                : _Range1<n2, Plus<n2, Mul<step, Decreaser<unit>>>, step>)
            : never
        : never

生成一个表示范围的数字, 最大可容纳范围为 Range<0, 27698> 也就是 27699 个元素,但是容量越大越消耗性能,所以超过1万的容量需要注意性能问题

Type Parameters

  • start extends number

    范围的开始数字,必须比结束数字小或等于结束数字

  • end extends number

    范围的结束数字

  • step extends number = 1

    范围步进,这个参数也会影响范围的容量, Range<0, 80000> 是无法被表示的,但是 Range<0, 80000, 200> 是可以表示的

Returns

返回范围数字的联合

Example

Range<1, 9> // 2 | 1 | 3 | 9 | 8 | 4 | 5 | 6 | 7
Range<0, 255> // 0 | 1 | 2 | ... | 255
Range<1, 9, 2> // 3 | 1 | 5 | 7 | 9
// 如果你希望得到字符串数字的范围
Str<Range<1, 9, 3>> // "1" | "4" | "7"

Generated using TypeDoc