Тип ограничения диапазона чисел
Автор: LIMPIX31
Диапазон целых чисел можно ограничить используя только типы Typescript
// Тип объединения для чисел от 0 до N
export type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N
? Acc[number]
: Enumerate<N, [...Acc, Acc['length']]>
// Тип объединения для чисел от F до T
export type Range<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>
type Rating = Enumerate<5> // аналогично 0 | 1 | 2 | 3 | 4
type Level = Range<1, 6> // аналогично 1 | 2 | 3 | 4 | 5