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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
=== tests/cases/compiler/deeplyNestedCheck.ts ===
// Repro from #14794
interface DataSnapshot<X = {}> {
child(path: string): DataSnapshot;
>child : (path: string) => DataSnapshot
>path : string
}
interface Snapshot<T> extends DataSnapshot {
child<U extends Extract<keyof T, string>>(path: U): Snapshot<T[U]>;
>child : <U extends Extract<keyof T, string>>(path: U) => Snapshot<T[U]>
>path : U
}
// Repro from 34619
interface A { b: B[] }
>b : B[]
interface B { c: C }
>c : C
interface C { d: D[] }
>d : D[]
interface D { e: E[] }
>e : E[]
interface E { f: F[] }
>f : F[]
interface F { g: G }
>g : G
interface G { h: H[] }
>h : H[]
interface H { i: string }
>i : string
const x: A = {
>x : A
>{ b: [ { c: { d: [ { e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], }, ], }, }, ],} : { b: { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]; }
b: [
>b : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]
>[ { c: { d: [ { e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], }, ], }, }, ] : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]
{
>{ c: { d: [ { e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], }, ], }, } : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }
c: {
>c : { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }
>{ d: [ { e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], }, ], } : { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }
d: [
>d : { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]
>[ { e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], }, ] : { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]
{
>{ e: [ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ], } : { e: { f: { g: { h: {}[]; }; }[]; }[]; }
e: [
>e : { f: { g: { h: {}[]; }; }[]; }[]
>[ { f: [ { g: { h: [ { // i: '', }, ], }, }, ], }, ] : { f: { g: { h: {}[]; }; }[]; }[]
{
>{ f: [ { g: { h: [ { // i: '', }, ], }, }, ], } : { f: { g: { h: {}[]; }; }[]; }
f: [
>f : { g: { h: {}[]; }; }[]
>[ { g: { h: [ { // i: '', }, ], }, }, ] : { g: { h: {}[]; }; }[]
{
>{ g: { h: [ { // i: '', }, ], }, } : { g: { h: {}[]; }; }
g: {
>g : { h: {}[]; }
>{ h: [ { // i: '', }, ], } : { h: {}[]; }
h: [
>h : {}[]
>[ { // i: '', }, ] : {}[]
{
>{ // i: '', } : {}
// i: '',
},
],
},
},
],
},
],
},
],
},
},
],
};
// Repro from 34619
const a1: string[][][][][] = [[[[[42]]]]];
>a1 : string[][][][][]
>[[[[[42]]]]] : number[][][][][]
>[[[[42]]]] : number[][][][]
>[[[42]]] : number[][][]
>[[42]] : number[][]
>[42] : number[]
>42 : 42
const a2: string[][][][][][][][][][] = [[[[[[[[[[42]]]]]]]]]];
>a2 : string[][][][][][][][][][]
>[[[[[[[[[[42]]]]]]]]]] : number[][][][][][][][][][]
>[[[[[[[[[42]]]]]]]]] : number[][][][][][][][][]
>[[[[[[[[42]]]]]]]] : number[][][][][][][][]
>[[[[[[[42]]]]]]] : number[][][][][][][]
>[[[[[[42]]]]]] : number[][][][][][]
>[[[[[42]]]]] : number[][][][][]
>[[[[42]]]] : number[][][][]
>[[[42]]] : number[][][]
>[[42]] : number[][]
>[42] : number[]
>42 : 42
|