Итак, вам нужен числовой тип диапазона, например, от 30-40
обычно это делается следующим образом
type Thirty_to_Forty = 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37| 38 | 39 |40
Это выполнимо, но неинтересно.
Что если вам нужно мета-решение, от любого диапазона к любому диапазону, возможно ли это вообще?
Возможно, вот как вы это сделаете
type CreateArrayWithLengthX<
LENGTH extends number,
ACC extends unknown[] = [],
> = ACC['length'] extends LENGTH
? ACC
: CreateArrayWithLengthX<LENGTH, [...ACC,1]>
type NumericRange<
START_ARR extends number[],
END extends number,
ACC extends number=never>
=START_ARR['length'] extends END
? ACC | END
: NumericRange<[...START_ARR,1], END, ACC | START_ARR['length']>
type TWENTY_TO_FORTY = NumericRange<CreateArrayWithLengthX<20>,40>
Playground
имейте в виду, что существует предел того, насколько глубоко Typescript может перебирать, и это число равно 1000.
Typescript будет жаловаться, если ваше начальное число равно 1000 или размер диапазона равен 1000.