1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "getProperty",
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 10
15            },
16            "end": {
17              "line": 16,
18              "column": 21
19            }
20          }
21        },
22        "generator": false,
23        "async": false,
24        "expression": false,
25        "params": [
26          {
27            "type": "Identifier",
28            "name": "obj",
29            "typeAnnotation": {
30              "type": "TSTypeReference",
31              "typeName": {
32                "type": "Identifier",
33                "name": "out",
34                "loc": {
35                  "start": {
36                    "line": 16,
37                    "column": 55
38                  },
39                  "end": {
40                    "line": 16,
41                    "column": 58
42                  }
43                }
44              },
45              "loc": {
46                "start": {
47                  "line": 16,
48                  "column": 55
49                },
50                "end": {
51                  "line": 16,
52                  "column": 58
53                }
54              }
55            },
56            "loc": {
57              "start": {
58                "line": 16,
59                "column": 50
60              },
61              "end": {
62                "line": 16,
63                "column": 53
64              }
65            }
66          },
67          {
68            "type": "Identifier",
69            "name": "key",
70            "typeAnnotation": {
71              "type": "TSTypeReference",
72              "typeName": {
73                "type": "Identifier",
74                "name": "Key",
75                "loc": {
76                  "start": {
77                    "line": 16,
78                    "column": 65
79                  },
80                  "end": {
81                    "line": 16,
82                    "column": 68
83                  }
84                }
85              },
86              "loc": {
87                "start": {
88                  "line": 16,
89                  "column": 65
90                },
91                "end": {
92                  "line": 16,
93                  "column": 68
94                }
95              }
96            },
97            "loc": {
98              "start": {
99                "line": 16,
100                "column": 60
101              },
102              "end": {
103                "line": 16,
104                "column": 63
105              }
106            }
107          }
108        ],
109        "typeParameters": {
110          "type": "TSTypeParameterDeclaration",
111          "params": [
112            {
113              "type": "TSTypeParameter",
114              "name": {
115                "type": "Identifier",
116                "name": "out",
117                "loc": {
118                  "start": {
119                    "line": 16,
120                    "column": 22
121                  },
122                  "end": {
123                    "line": 16,
124                    "column": 25
125                  }
126                }
127              },
128              "in": false,
129              "out": false,
130              "loc": {
131                "start": {
132                  "line": 16,
133                  "column": 22
134                },
135                "end": {
136                  "line": 16,
137                  "column": 26
138                }
139              }
140            },
141            {
142              "type": "TSTypeParameter",
143              "name": {
144                "type": "Identifier",
145                "name": "Key",
146                "loc": {
147                  "start": {
148                    "line": 16,
149                    "column": 27
150                  },
151                  "end": {
152                    "line": 16,
153                    "column": 30
154                  }
155                }
156              },
157              "constraint": {
158                "type": "TSTypeOperator",
159                "operator": "keyof",
160                "typeAnnotation": {
161                  "type": "TSTypeReference",
162                  "typeName": {
163                    "type": "Identifier",
164                    "name": "out",
165                    "loc": {
166                      "start": {
167                        "line": 16,
168                        "column": 45
169                      },
170                      "end": {
171                        "line": 16,
172                        "column": 48
173                      }
174                    }
175                  },
176                  "loc": {
177                    "start": {
178                      "line": 16,
179                      "column": 45
180                    },
181                    "end": {
182                      "line": 16,
183                      "column": 48
184                    }
185                  }
186                },
187                "loc": {
188                  "start": {
189                    "line": 16,
190                    "column": 39
191                  },
192                  "end": {
193                    "line": 16,
194                    "column": 48
195                  }
196                }
197              },
198              "in": false,
199              "out": false,
200              "loc": {
201                "start": {
202                  "line": 16,
203                  "column": 27
204                },
205                "end": {
206                  "line": 16,
207                  "column": 49
208                }
209              }
210            }
211          ],
212          "loc": {
213            "start": {
214              "line": 16,
215              "column": 21
216            },
217            "end": {
218              "line": 16,
219              "column": 49
220            }
221          }
222        },
223        "body": {
224          "type": "BlockStatement",
225          "statements": [
226            {
227              "type": "ReturnStatement",
228              "argument": {
229                "type": "MemberExpression",
230                "object": {
231                  "type": "Identifier",
232                  "name": "obj",
233                  "loc": {
234                    "start": {
235                      "line": 17,
236                      "column": 12
237                    },
238                    "end": {
239                      "line": 17,
240                      "column": 15
241                    }
242                  }
243                },
244                "property": {
245                  "type": "Identifier",
246                  "name": "key",
247                  "loc": {
248                    "start": {
249                      "line": 17,
250                      "column": 16
251                    },
252                    "end": {
253                      "line": 17,
254                      "column": 19
255                    }
256                  }
257                },
258                "computed": true,
259                "optional": false,
260                "loc": {
261                  "start": {
262                    "line": 17,
263                    "column": 12
264                  },
265                  "end": {
266                    "line": 17,
267                    "column": 20
268                  }
269                }
270              },
271              "loc": {
272                "start": {
273                  "line": 17,
274                  "column": 5
275                },
276                "end": {
277                  "line": 17,
278                  "column": 21
279                }
280              }
281            }
282          ],
283          "loc": {
284            "start": {
285              "line": 16,
286              "column": 70
287            },
288            "end": {
289              "line": 18,
290              "column": 2
291            }
292          }
293        },
294        "loc": {
295          "start": {
296            "line": 16,
297            "column": 1
298          },
299          "end": {
300            "line": 18,
301            "column": 2
302          }
303        }
304      },
305      "loc": {
306        "start": {
307          "line": 16,
308          "column": 1
309        },
310        "end": {
311          "line": 18,
312          "column": 2
313        }
314      }
315    }
316  ],
317  "loc": {
318    "start": {
319      "line": 1,
320      "column": 1
321    },
322    "end": {
323      "line": 18,
324      "column": 2
325    }
326  }
327}
328