Это пост с доказательством концепции, лично я не нахожу в этом никакого применения, пока

Рекурсия машинописного текста останавливается на 49-м или 999-м цикле

type CreateArrayWithLengthX<
    LENGTH extends number,
    ACC extends unknown[] = [],
> = ACC['length'] extends LENGTH
    ? ACC
    : CreateArrayWithLengthX<LENGTH, [...ACC, 1]>

type A = CreateArrayWithLengthX<999>['length'] // 999
type B = CreateArrayWithLengthX<1000>['length'] // any

"детская площадка"

Это нехорошо, если вы хотите динамически генерировать тип массива с длиной более 999

решение состоит в том, чтобы добавить еще одно измерение в цикл более 999 раз.

type CreateArrayWithLengthX<
    LENGTH extends number,
    ACC extends unknown[] = [],
> = ACC['length'] extends LENGTH
    ? ACC
    : CreateArrayWithLengthX<LENGTH, [...ACC, 1]>

type Exceed999<
    ARR extends 1[],
> = [...ARR['length'] extends 0 ? []: [...CreateArrayWithLengthX<999>,...Exceed999<ARR extends [...infer S extends 1[], infer P] ? S : never>]]

type V = Exceed999<CreateArrayWithLengthX<10>>['length'] // 10x999 = 9990

"детская площадка"

теперь вы можете динамически создавать тип массива с длиной больше 999

однако имейте в виду, что максимальная длина типа массива составляет 10 000

Можно создать массив любой длины меньше 10 000, а не только множитель 999, но это потребует много работы, и я хочу, чтобы здесь все было просто.