1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Foo",
10          "loc": {
11            "start": {
12              "line": 17,
13              "column": 7
14            },
15            "end": {
16              "line": 17,
17              "column": 10
18            }
19          }
20        },
21        "superClass": null,
22        "implements": [],
23        "constructor": {
24          "type": "MethodDefinition",
25          "key": {
26            "type": "Identifier",
27            "name": "constructor",
28            "loc": {
29              "start": {
30                "line": 1,
31                "column": 1
32              },
33              "end": {
34                "line": 1,
35                "column": 1
36              }
37            }
38          },
39          "kind": "constructor",
40          "static": false,
41          "optional": false,
42          "computed": false,
43          "value": {
44            "type": "FunctionExpression",
45            "function": {
46              "type": "ScriptFunction",
47              "id": null,
48              "generator": false,
49              "async": false,
50              "expression": false,
51              "params": [],
52              "body": {
53                "type": "BlockStatement",
54                "statements": [],
55                "loc": {
56                  "start": {
57                    "line": 1,
58                    "column": 1
59                  },
60                  "end": {
61                    "line": 1,
62                    "column": 1
63                  }
64                }
65              },
66              "loc": {
67                "start": {
68                  "line": 1,
69                  "column": 1
70                },
71                "end": {
72                  "line": 1,
73                  "column": 1
74                }
75              }
76            },
77            "loc": {
78              "start": {
79                "line": 1,
80                "column": 1
81              },
82              "end": {
83                "line": 1,
84                "column": 1
85              }
86            }
87          },
88          "overloads": [],
89          "decorators": [],
90          "annotations": [],
91          "loc": {
92            "start": {
93              "line": 17,
94              "column": 1
95            },
96            "end": {
97              "line": 24,
98              "column": 2
99            }
100          }
101        },
102        "body": [
103          {
104            "type": "ClassProperty",
105            "key": {
106              "type": "Identifier",
107              "name": "str",
108              "loc": {
109                "start": {
110                  "line": 18,
111                  "column": 3
112                },
113                "end": {
114                  "line": 18,
115                  "column": 6
116                }
117              }
118            },
119            "value": {
120              "type": "StringLiteral",
121              "value": "hello",
122              "loc": {
123                "start": {
124                  "line": 18,
125                  "column": 17
126                },
127                "end": {
128                  "line": 18,
129                  "column": 24
130                }
131              }
132            },
133            "static": false,
134            "readonly": false,
135            "declare": false,
136            "optional": false,
137            "computed": false,
138            "typeAnnotation": {
139              "type": "TSStringKeyword",
140              "loc": {
141                "start": {
142                  "line": 18,
143                  "column": 8
144                },
145                "end": {
146                  "line": 18,
147                  "column": 14
148                }
149              }
150            },
151            "decorators": [],
152            "loc": {
153              "start": {
154                "line": 18,
155                "column": 3
156              },
157              "end": {
158                "line": 18,
159                "column": 24
160              }
161            }
162          },
163          {
164            "type": "ClassProperty",
165            "key": {
166              "type": "Identifier",
167              "name": "num",
168              "loc": {
169                "start": {
170                  "line": 19,
171                  "column": 3
172                },
173                "end": {
174                  "line": 19,
175                  "column": 6
176                }
177              }
178            },
179            "value": {
180              "type": "NumberLiteral",
181              "value": 123,
182              "loc": {
183                "start": {
184                  "line": 19,
185                  "column": 17
186                },
187                "end": {
188                  "line": 19,
189                  "column": 20
190                }
191              }
192            },
193            "static": false,
194            "readonly": false,
195            "declare": false,
196            "optional": false,
197            "computed": false,
198            "typeAnnotation": {
199              "type": "TSNumberKeyword",
200              "loc": {
201                "start": {
202                  "line": 19,
203                  "column": 8
204                },
205                "end": {
206                  "line": 19,
207                  "column": 14
208                }
209              }
210            },
211            "decorators": [],
212            "loc": {
213              "start": {
214                "line": 19,
215                "column": 3
216              },
217              "end": {
218                "line": 19,
219                "column": 20
220              }
221            }
222          }
223        ],
224        "indexSignatures": [
225          {
226            "type": "TSIndexSignature",
227            "parameters": {
228              "type": "Identifier",
229              "name": "propName",
230              "typeAnnotation": {
231                "type": "TSStringKeyword",
232                "loc": {
233                  "start": {
234                    "line": 20,
235                    "column": 14
236                  },
237                  "end": {
238                    "line": 20,
239                    "column": 20
240                  }
241                }
242              },
243              "loc": {
244                "start": {
245                  "line": 20,
246                  "column": 4
247                },
248                "end": {
249                  "line": 20,
250                  "column": 12
251                }
252              }
253            },
254            "typeAnnotation": {
255              "type": "TSUnionType",
256              "types": [
257                {
258                  "type": "TSStringKeyword",
259                  "loc": {
260                    "start": {
261                      "line": 20,
262                      "column": 23
263                    },
264                    "end": {
265                      "line": 20,
266                      "column": 29
267                    }
268                  }
269                },
270                {
271                  "type": "TSNumberKeyword",
272                  "loc": {
273                    "start": {
274                      "line": 20,
275                      "column": 32
276                    },
277                    "end": {
278                      "line": 20,
279                      "column": 38
280                    }
281                  }
282                }
283              ],
284              "loc": {
285                "start": {
286                  "line": 20,
287                  "column": 23
288                },
289                "end": {
290                  "line": 20,
291                  "column": 38
292                }
293              }
294            },
295            "readonly": false,
296            "static": false,
297            "loc": {
298              "start": {
299                "line": 20,
300                "column": 3
301              },
302              "end": {
303                "line": 20,
304                "column": 38
305              }
306            }
307          },
308          {
309            "type": "TSIndexSignature",
310            "parameters": {
311              "type": "Identifier",
312              "name": "propName",
313              "typeAnnotation": {
314                "type": "TSStringKeyword",
315                "loc": {
316                  "start": {
317                    "line": 21,
318                    "column": 21
319                  },
320                  "end": {
321                    "line": 21,
322                    "column": 27
323                  }
324                }
325              },
326              "loc": {
327                "start": {
328                  "line": 21,
329                  "column": 11
330                },
331                "end": {
332                  "line": 21,
333                  "column": 19
334                }
335              }
336            },
337            "typeAnnotation": {
338              "type": "TSUnionType",
339              "types": [
340                {
341                  "type": "TSStringKeyword",
342                  "loc": {
343                    "start": {
344                      "line": 21,
345                      "column": 30
346                    },
347                    "end": {
348                      "line": 21,
349                      "column": 36
350                    }
351                  }
352                },
353                {
354                  "type": "TSNumberKeyword",
355                  "loc": {
356                    "start": {
357                      "line": 21,
358                      "column": 39
359                    },
360                    "end": {
361                      "line": 21,
362                      "column": 45
363                    }
364                  }
365                }
366              ],
367              "loc": {
368                "start": {
369                  "line": 21,
370                  "column": 30
371                },
372                "end": {
373                  "line": 21,
374                  "column": 45
375                }
376              }
377            },
378            "readonly": false,
379            "static": true,
380            "loc": {
381              "start": {
382                "line": 21,
383                "column": 3
384              },
385              "end": {
386                "line": 21,
387                "column": 45
388              }
389            }
390          },
391          {
392            "type": "TSIndexSignature",
393            "parameters": {
394              "type": "Identifier",
395              "name": "propName",
396              "typeAnnotation": {
397                "type": "TSNumberKeyword",
398                "loc": {
399                  "start": {
400                    "line": 22,
401                    "column": 23
402                  },
403                  "end": {
404                    "line": 22,
405                    "column": 29
406                  }
407                }
408              },
409              "loc": {
410                "start": {
411                  "line": 22,
412                  "column": 13
413                },
414                "end": {
415                  "line": 22,
416                  "column": 21
417                }
418              }
419            },
420            "typeAnnotation": {
421              "type": "TSStringKeyword",
422              "loc": {
423                "start": {
424                  "line": 22,
425                  "column": 32
426                },
427                "end": {
428                  "line": 22,
429                  "column": 38
430                }
431              }
432            },
433            "readonly": true,
434            "static": false,
435            "loc": {
436              "start": {
437                "line": 22,
438                "column": 3
439              },
440              "end": {
441                "line": 22,
442                "column": 38
443              }
444            }
445          },
446          {
447            "type": "TSIndexSignature",
448            "parameters": {
449              "type": "Identifier",
450              "name": "propName",
451              "typeAnnotation": {
452                "type": "TSNumberKeyword",
453                "loc": {
454                  "start": {
455                    "line": 23,
456                    "column": 30
457                  },
458                  "end": {
459                    "line": 23,
460                    "column": 36
461                  }
462                }
463              },
464              "loc": {
465                "start": {
466                  "line": 23,
467                  "column": 20
468                },
469                "end": {
470                  "line": 23,
471                  "column": 28
472                }
473              }
474            },
475            "typeAnnotation": {
476              "type": "TSStringKeyword",
477              "loc": {
478                "start": {
479                  "line": 23,
480                  "column": 39
481                },
482                "end": {
483                  "line": 23,
484                  "column": 45
485                }
486              }
487            },
488            "readonly": true,
489            "static": true,
490            "loc": {
491              "start": {
492                "line": 23,
493                "column": 3
494              },
495              "end": {
496                "line": 23,
497                "column": 45
498              }
499            }
500          }
501        ],
502        "loc": {
503          "start": {
504            "line": 17,
505            "column": 11
506          },
507          "end": {
508            "line": 24,
509            "column": 2
510          }
511        }
512      },
513      "decorators": [],
514      "isAnnotationDeclaration": false,
515      "loc": {
516        "start": {
517          "line": 17,
518          "column": 1
519        },
520        "end": {
521          "line": 24,
522          "column": 2
523        }
524      }
525    },
526    {
527      "type": "ExpressionStatement",
528      "expression": {
529        "type": "AssignmentExpression",
530        "operator": "=",
531        "left": {
532          "type": "MemberExpression",
533          "object": {
534            "type": "Identifier",
535            "name": "Foo",
536            "loc": {
537              "start": {
538                "line": 26,
539                "column": 1
540              },
541              "end": {
542                "line": 26,
543                "column": 4
544              }
545            }
546          },
547          "property": {
548            "type": "StringLiteral",
549            "value": "whatever",
550            "loc": {
551              "start": {
552                "line": 26,
553                "column": 5
554              },
555              "end": {
556                "line": 26,
557                "column": 15
558              }
559            }
560          },
561          "computed": true,
562          "optional": false,
563          "loc": {
564            "start": {
565              "line": 26,
566              "column": 1
567            },
568            "end": {
569              "line": 26,
570              "column": 16
571            }
572          }
573        },
574        "right": {
575          "type": "NumberLiteral",
576          "value": 456,
577          "loc": {
578            "start": {
579              "line": 26,
580              "column": 19
581            },
582            "end": {
583              "line": 26,
584              "column": 22
585            }
586          }
587        },
588        "loc": {
589          "start": {
590            "line": 26,
591            "column": 1
592          },
593          "end": {
594            "line": 26,
595            "column": 22
596          }
597        }
598      },
599      "loc": {
600        "start": {
601          "line": 26,
602          "column": 1
603        },
604        "end": {
605          "line": 26,
606          "column": 23
607        }
608      }
609    },
610    {
611      "type": "VariableDeclaration",
612      "declarations": [
613        {
614          "type": "VariableDeclarator",
615          "id": {
616            "type": "Identifier",
617            "name": "foo",
618            "typeAnnotation": {
619              "type": "TSTypeReference",
620              "typeName": {
621                "type": "Identifier",
622                "name": "Foo",
623                "loc": {
624                  "start": {
625                    "line": 27,
626                    "column": 10
627                  },
628                  "end": {
629                    "line": 27,
630                    "column": 13
631                  }
632                }
633              },
634              "loc": {
635                "start": {
636                  "line": 27,
637                  "column": 10
638                },
639                "end": {
640                  "line": 27,
641                  "column": 13
642                }
643              }
644            },
645            "loc": {
646              "start": {
647                "line": 27,
648                "column": 5
649              },
650              "end": {
651                "line": 27,
652                "column": 8
653              }
654            }
655          },
656          "init": {
657            "type": "NewExpression",
658            "callee": {
659              "type": "Identifier",
660              "name": "Foo",
661              "loc": {
662                "start": {
663                  "line": 27,
664                  "column": 20
665                },
666                "end": {
667                  "line": 27,
668                  "column": 23
669                }
670              }
671            },
672            "arguments": [],
673            "loc": {
674              "start": {
675                "line": 27,
676                "column": 16
677              },
678              "end": {
679                "line": 27,
680                "column": 25
681              }
682            }
683          },
684          "loc": {
685            "start": {
686              "line": 27,
687              "column": 5
688            },
689            "end": {
690              "line": 27,
691              "column": 25
692            }
693          }
694        }
695      ],
696      "kind": "let",
697      "loc": {
698        "start": {
699          "line": 27,
700          "column": 1
701        },
702        "end": {
703          "line": 27,
704          "column": 26
705        }
706      }
707    },
708    {
709      "type": "ExpressionStatement",
710      "expression": {
711        "type": "AssignmentExpression",
712        "operator": "=",
713        "left": {
714          "type": "MemberExpression",
715          "object": {
716            "type": "Identifier",
717            "name": "foo",
718            "loc": {
719              "start": {
720                "line": 28,
721                "column": 1
722              },
723              "end": {
724                "line": 28,
725                "column": 4
726              }
727            }
728          },
729          "property": {
730            "type": "StringLiteral",
731            "value": "word",
732            "loc": {
733              "start": {
734                "line": 28,
735                "column": 5
736              },
737              "end": {
738                "line": 28,
739                "column": 11
740              }
741            }
742          },
743          "computed": true,
744          "optional": false,
745          "loc": {
746            "start": {
747              "line": 28,
748              "column": 1
749            },
750            "end": {
751              "line": 28,
752              "column": 12
753            }
754          }
755        },
756        "right": {
757          "type": "StringLiteral",
758          "value": "hi",
759          "loc": {
760            "start": {
761              "line": 28,
762              "column": 15
763            },
764            "end": {
765              "line": 28,
766              "column": 19
767            }
768          }
769        },
770        "loc": {
771          "start": {
772            "line": 28,
773            "column": 1
774          },
775          "end": {
776            "line": 28,
777            "column": 19
778          }
779        }
780      },
781      "loc": {
782        "start": {
783          "line": 28,
784          "column": 1
785        },
786        "end": {
787          "line": 28,
788          "column": 20
789        }
790      }
791    }
792  ],
793  "loc": {
794    "start": {
795      "line": 1,
796      "column": 1
797    },
798    "end": {
799      "line": 28,
800      "column": 20
801    }
802  }
803}
804