//// [tailRecursiveConditionalTypes.ts] type Trim = S extends ` ${infer T}` ? Trim : S extends `${infer T} ` ? Trim : S; type T10 = Trim<' hello '>; type T11 = Trim<' hello '>; type GetChars = GetCharsRec; type GetCharsRec = S extends `${infer Char}${infer Rest}` ? GetCharsRec : Acc; type T20 = GetChars<'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'>; type Reverse = any[] extends T ? T : ReverseRec; type ReverseRec = T extends [infer Head, ...infer Tail] ? ReverseRec : Acc; type T30 = Reverse<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>; type T31 = Reverse; type TupleOf = number extends N ? T[] : TupleOfRec; type TupleOfRec = Acc["length"] extends N ? Acc : TupleOfRec; type T40 = TupleOf; type T41 = TupleOf; //// [tailRecursiveConditionalTypes.js] "use strict"; //// [tailRecursiveConditionalTypes.d.ts] declare type Trim = S extends ` ${infer T}` ? Trim : S extends `${infer T} ` ? Trim : S; declare type T10 = Trim<' hello '>; declare type T11 = Trim<' hello '>; declare type GetChars = GetCharsRec; declare type GetCharsRec = S extends `${infer Char}${infer Rest}` ? GetCharsRec : Acc; declare type T20 = GetChars<'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'>; declare type Reverse = any[] extends T ? T : ReverseRec; declare type ReverseRec = T extends [infer Head, ...infer Tail] ? ReverseRec : Acc; declare type T30 = Reverse<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>; declare type T31 = Reverse; declare type TupleOf = number extends N ? T[] : TupleOfRec; declare type TupleOfRec = Acc["length"] extends N ? Acc : TupleOfRec; declare type T40 = TupleOf; declare type T41 = TupleOf;