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