1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
=== tests/cases/compiler/inferTypesWithFixedTupleExtendsAtVariadicPosition.ts ===
// repro #51138
type SubTup2FixedLength<T extends unknown[]> = T extends [
>SubTup2FixedLength : SubTup2FixedLength<T>
...infer B extends [any, any],
any
]
? B
: never;
type SubTup2FixedLengthTest = SubTup2FixedLength<[a: 0, b: 1, c: 2]>;
>SubTup2FixedLengthTest : [a: 0, b: 1]
type SubTup2Variadic<T extends unknown[]> = T extends [
>SubTup2Variadic : SubTup2Variadic<T>
...infer B extends [any, any],
...any
]
? B
: never;
type SubTup2VariadicTest = SubTup2Variadic<[a: 0, b: 1, ...c: 2[]]>;
>SubTup2VariadicTest : [a: 0, b: 1]
type SubTup2VariadicTest2 = SubTup2Variadic<[a: 0, b: 1, c: 2, ...d: 3[]]>;
>SubTup2VariadicTest2 : [a: 0, b: 1]
type SubTup2VariadicAndRest<T extends unknown[]> = T extends [
>SubTup2VariadicAndRest : SubTup2VariadicAndRest<T>
...infer B extends [any, any],
...(infer C)[]
]
? [...B, ...[C]]
: never;
type SubTup2VariadicAndRestTest = SubTup2VariadicAndRest<[a: 0, b: 1, ...c: 2[]]>;
>SubTup2VariadicAndRestTest : [0, 1, 2]
type SubTup2TrailingVariadic<T extends unknown[]> = T extends [
>SubTup2TrailingVariadic : SubTup2TrailingVariadic<T>
...any,
...infer B extends [any, any],
]
? B
: never;
type SubTup2TrailingVariadicTest = SubTup2TrailingVariadic<[...a: 0[], b: 1, c: 2]>;
>SubTup2TrailingVariadicTest : [b: 1, c: 2]
type SubTup2TrailingVariadicTest2 = SubTup2TrailingVariadic<[...a: 0[], b: 1, c: 2, d: 3]>;
>SubTup2TrailingVariadicTest2 : [c: 2, d: 3]
type SubTup2RestAndTrailingVariadic2<T extends unknown[]> = T extends [
>SubTup2RestAndTrailingVariadic2 : SubTup2RestAndTrailingVariadic2<T>
...(infer C)[],
...infer B extends [any, any],
]
? [C, ...B]
: never;
type SubTup2RestAndTrailingVariadic2Test = SubTup2RestAndTrailingVariadic2<[...a: 0[], b: 1, c: 2]>;
>SubTup2RestAndTrailingVariadic2Test : [0, 1, 2]
type SubTup2VariadicWithLeadingFixedElements<T extends unknown[]> = T extends [
>SubTup2VariadicWithLeadingFixedElements : SubTup2VariadicWithLeadingFixedElements<T>
any,
...infer B extends [any, any],
...any
]
? B
: never;
type SubTup2VariadicWithLeadingFixedElementsTest = SubTup2VariadicWithLeadingFixedElements<[a: 0, b: 1, c: 2, ...d: 3[]]>;
>SubTup2VariadicWithLeadingFixedElementsTest : [b: 1, c: 2]
type SubTup2VariadicWithLeadingFixedElementsTest2 = SubTup2VariadicWithLeadingFixedElements<[a: 0, b: 1, c: 2, d: 3, ...e: 4[]]>;
>SubTup2VariadicWithLeadingFixedElementsTest2 : [b: 1, c: 2]
type SubTup2TrailingVariadicWithTrailingFixedElements<T extends unknown[]> = T extends [
>SubTup2TrailingVariadicWithTrailingFixedElements : SubTup2TrailingVariadicWithTrailingFixedElements<T>
...any,
...infer B extends [any, any],
any,
]
? B
: never;
type SubTup2TrailingVariadicWithTrailingFixedElementsTest = SubTup2TrailingVariadicWithTrailingFixedElements<[...a: 0[], b: 1, c: 2, d: 3]>;
>SubTup2TrailingVariadicWithTrailingFixedElementsTest : [b: 1, c: 2]
type SubTup2TrailingVariadicWithTrailingFixedElementsTest2 = SubTup2TrailingVariadicWithTrailingFixedElements<[...a: 0[], b: 1, c: 2, d: 3, e: 4]>;
>SubTup2TrailingVariadicWithTrailingFixedElementsTest2 : [c: 2, d: 3]
|