|
| 1 | +//// [tests/cases/conformance/types/mapped/mappedTypesGenericTuples.ts] //// |
| 2 | + |
| 3 | +=== mappedTypesGenericTuples.ts === |
| 4 | +// Property keys are `number` following the fixed part of a tuple |
| 5 | + |
| 6 | +type K<T> = { [P in keyof T]: P }; |
| 7 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 8 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 2, 7)) |
| 9 | +>P : Symbol(P, Decl(mappedTypesGenericTuples.ts, 2, 15)) |
| 10 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 2, 7)) |
| 11 | +>P : Symbol(P, Decl(mappedTypesGenericTuples.ts, 2, 15)) |
| 12 | + |
| 13 | +type M<T> = { [P in keyof T]: T[P] }; |
| 14 | +>M : Symbol(M, Decl(mappedTypesGenericTuples.ts, 2, 34)) |
| 15 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 3, 7)) |
| 16 | +>P : Symbol(P, Decl(mappedTypesGenericTuples.ts, 3, 15)) |
| 17 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 3, 7)) |
| 18 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 3, 7)) |
| 19 | +>P : Symbol(P, Decl(mappedTypesGenericTuples.ts, 3, 15)) |
| 20 | + |
| 21 | +type KA = K<[string, string, boolean]>; // ["0", "1", "2"] |
| 22 | +>KA : Symbol(KA, Decl(mappedTypesGenericTuples.ts, 3, 37)) |
| 23 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 24 | + |
| 25 | +type KB = K<[string, string, ...string[], string]>; // ["0", "1", ...number[], number] |
| 26 | +>KB : Symbol(KB, Decl(mappedTypesGenericTuples.ts, 5, 39)) |
| 27 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 28 | + |
| 29 | +type KC = K<[...string[]]>; // number[] |
| 30 | +>KC : Symbol(KC, Decl(mappedTypesGenericTuples.ts, 6, 51)) |
| 31 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 32 | + |
| 33 | +type KD = K<string[]>; // number[] |
| 34 | +>KD : Symbol(KD, Decl(mappedTypesGenericTuples.ts, 7, 27)) |
| 35 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 36 | + |
| 37 | +type A = { a: string }; |
| 38 | +>A : Symbol(A, Decl(mappedTypesGenericTuples.ts, 8, 22)) |
| 39 | +>a : Symbol(a, Decl(mappedTypesGenericTuples.ts, 10, 10)) |
| 40 | + |
| 41 | +type B = { b: string }; |
| 42 | +>B : Symbol(B, Decl(mappedTypesGenericTuples.ts, 10, 23)) |
| 43 | +>b : Symbol(b, Decl(mappedTypesGenericTuples.ts, 11, 10)) |
| 44 | + |
| 45 | +type C = { c: string }; |
| 46 | +>C : Symbol(C, Decl(mappedTypesGenericTuples.ts, 11, 23)) |
| 47 | +>c : Symbol(c, Decl(mappedTypesGenericTuples.ts, 12, 10)) |
| 48 | + |
| 49 | +type D = { d: string }; |
| 50 | +>D : Symbol(D, Decl(mappedTypesGenericTuples.ts, 12, 23)) |
| 51 | +>d : Symbol(d, Decl(mappedTypesGenericTuples.ts, 13, 10)) |
| 52 | + |
| 53 | +type V0<T extends unknown[]> = [A, B?, ...T, ...C[]] |
| 54 | +>V0 : Symbol(V0, Decl(mappedTypesGenericTuples.ts, 13, 23)) |
| 55 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 15, 8)) |
| 56 | +>A : Symbol(A, Decl(mappedTypesGenericTuples.ts, 8, 22)) |
| 57 | +>B : Symbol(B, Decl(mappedTypesGenericTuples.ts, 10, 23)) |
| 58 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 15, 8)) |
| 59 | +>C : Symbol(C, Decl(mappedTypesGenericTuples.ts, 11, 23)) |
| 60 | + |
| 61 | +type V1<T extends unknown[]> = [A, ...T, B, ...C[], D] |
| 62 | +>V1 : Symbol(V1, Decl(mappedTypesGenericTuples.ts, 15, 52)) |
| 63 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 16, 8)) |
| 64 | +>A : Symbol(A, Decl(mappedTypesGenericTuples.ts, 8, 22)) |
| 65 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 16, 8)) |
| 66 | +>B : Symbol(B, Decl(mappedTypesGenericTuples.ts, 10, 23)) |
| 67 | +>C : Symbol(C, Decl(mappedTypesGenericTuples.ts, 11, 23)) |
| 68 | +>D : Symbol(D, Decl(mappedTypesGenericTuples.ts, 12, 23)) |
| 69 | + |
| 70 | +type K0<T extends unknown[]> = K<V0<T>>; // ["0", "1"?, ...K<T>, ...number[]] |
| 71 | +>K0 : Symbol(K0, Decl(mappedTypesGenericTuples.ts, 16, 54)) |
| 72 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 18, 8)) |
| 73 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 74 | +>V0 : Symbol(V0, Decl(mappedTypesGenericTuples.ts, 13, 23)) |
| 75 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 18, 8)) |
| 76 | + |
| 77 | +type K1<T extends unknown[]> = K<V1<T>>; // ["0", ...K<T>, number, ...number[], number] |
| 78 | +>K1 : Symbol(K1, Decl(mappedTypesGenericTuples.ts, 18, 40)) |
| 79 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 19, 8)) |
| 80 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 0, 0)) |
| 81 | +>V1 : Symbol(V1, Decl(mappedTypesGenericTuples.ts, 15, 52)) |
| 82 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 19, 8)) |
| 83 | + |
| 84 | +type M0<T extends unknown[]> = M<V0<T>>; // [A, B?, ...M<T>, ...C[]] |
| 85 | +>M0 : Symbol(M0, Decl(mappedTypesGenericTuples.ts, 19, 40)) |
| 86 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 21, 8)) |
| 87 | +>M : Symbol(M, Decl(mappedTypesGenericTuples.ts, 2, 34)) |
| 88 | +>V0 : Symbol(V0, Decl(mappedTypesGenericTuples.ts, 13, 23)) |
| 89 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 21, 8)) |
| 90 | + |
| 91 | +type M1<T extends unknown[]> = M<V1<T>>; // [A, ...M<T>, B, ...C[], D] |
| 92 | +>M1 : Symbol(M1, Decl(mappedTypesGenericTuples.ts, 21, 40)) |
| 93 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 22, 8)) |
| 94 | +>M : Symbol(M, Decl(mappedTypesGenericTuples.ts, 2, 34)) |
| 95 | +>V1 : Symbol(V1, Decl(mappedTypesGenericTuples.ts, 15, 52)) |
| 96 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 22, 8)) |
| 97 | + |
| 98 | +// Repro from #48856 |
| 99 | + |
| 100 | +type Keys<O extends unknown[]> = { [K in keyof O]: K }; |
| 101 | +>Keys : Symbol(Keys, Decl(mappedTypesGenericTuples.ts, 22, 40)) |
| 102 | +>O : Symbol(O, Decl(mappedTypesGenericTuples.ts, 26, 10)) |
| 103 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 26, 36)) |
| 104 | +>O : Symbol(O, Decl(mappedTypesGenericTuples.ts, 26, 10)) |
| 105 | +>K : Symbol(K, Decl(mappedTypesGenericTuples.ts, 26, 36)) |
| 106 | + |
| 107 | +type Keys1 = Keys<[string, ...string[]]>; |
| 108 | +>Keys1 : Symbol(Keys1, Decl(mappedTypesGenericTuples.ts, 26, 55)) |
| 109 | +>Keys : Symbol(Keys, Decl(mappedTypesGenericTuples.ts, 22, 40)) |
| 110 | + |
| 111 | +type Keys2 = Keys<[string, ...string[], number]>; |
| 112 | +>Keys2 : Symbol(Keys2, Decl(mappedTypesGenericTuples.ts, 28, 41)) |
| 113 | +>Keys : Symbol(Keys, Decl(mappedTypesGenericTuples.ts, 22, 40)) |
| 114 | + |
| 115 | +// Repro from #56888 |
| 116 | + |
| 117 | +type T1 = ['a', 'b', 'c'] extends readonly [infer H, ...unknown[]] ? H : never; // "a" |
| 118 | +>T1 : Symbol(T1, Decl(mappedTypesGenericTuples.ts, 29, 49)) |
| 119 | +>H : Symbol(H, Decl(mappedTypesGenericTuples.ts, 33, 49)) |
| 120 | +>H : Symbol(H, Decl(mappedTypesGenericTuples.ts, 33, 49)) |
| 121 | + |
| 122 | +type T2 = ['a', 'b', 'c'] extends Readonly<[infer H, ...unknown[]]> ? H : never; // "a" |
| 123 | +>T2 : Symbol(T2, Decl(mappedTypesGenericTuples.ts, 33, 79)) |
| 124 | +>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --)) |
| 125 | +>H : Symbol(H, Decl(mappedTypesGenericTuples.ts, 34, 49)) |
| 126 | +>H : Symbol(H, Decl(mappedTypesGenericTuples.ts, 34, 49)) |
| 127 | + |
| 128 | +type T3 = ['a', 'b', 'c'] extends readonly [...unknown[], infer L] ? L : never; // "c" |
| 129 | +>T3 : Symbol(T3, Decl(mappedTypesGenericTuples.ts, 34, 80)) |
| 130 | +>L : Symbol(L, Decl(mappedTypesGenericTuples.ts, 35, 63)) |
| 131 | +>L : Symbol(L, Decl(mappedTypesGenericTuples.ts, 35, 63)) |
| 132 | + |
| 133 | +type T4 = ['a', 'b', 'c'] extends Readonly<[...unknown[], infer L]> ? L : never; // "c" |
| 134 | +>T4 : Symbol(T4, Decl(mappedTypesGenericTuples.ts, 35, 79)) |
| 135 | +>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --)) |
| 136 | +>L : Symbol(L, Decl(mappedTypesGenericTuples.ts, 36, 63)) |
| 137 | +>L : Symbol(L, Decl(mappedTypesGenericTuples.ts, 36, 63)) |
| 138 | + |
| 139 | +// Repro from #56888 |
| 140 | + |
| 141 | +type R1<T> = readonly [...unknown[], T]; // readonly [...unknown[], T] |
| 142 | +>R1 : Symbol(R1, Decl(mappedTypesGenericTuples.ts, 36, 80)) |
| 143 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 40, 8)) |
| 144 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 40, 8)) |
| 145 | + |
| 146 | +type R2<T> = Readonly<[...unknown[], T]>; // readonly [...unknown[], T] |
| 147 | +>R2 : Symbol(R2, Decl(mappedTypesGenericTuples.ts, 40, 40)) |
| 148 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 41, 8)) |
| 149 | +>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --)) |
| 150 | +>T : Symbol(T, Decl(mappedTypesGenericTuples.ts, 41, 8)) |
| 151 | + |
0 commit comments