1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "TSTypeAliasDeclaration", 6 "id": { 7 "type": "Identifier", 8 "name": "a", 9 "loc": { 10 "start": { 11 "line": 17, 12 "column": 6 13 }, 14 "end": { 15 "line": 17, 16 "column": 7 17 } 18 } 19 }, 20 "typeAnnotation": { 21 "type": "TSSymbolKeyword", 22 "loc": { 23 "start": { 24 "line": 17, 25 "column": 10 26 }, 27 "end": { 28 "line": 17, 29 "column": 16 30 } 31 } 32 }, 33 "loc": { 34 "start": { 35 "line": 17, 36 "column": 1 37 }, 38 "end": { 39 "line": 17, 40 "column": 17 41 } 42 } 43 }, 44 { 45 "type": "TSModuleDeclaration", 46 "id": { 47 "type": "Identifier", 48 "name": "ns", 49 "loc": { 50 "start": { 51 "line": 19, 52 "column": 11 53 }, 54 "end": { 55 "line": 19, 56 "column": 13 57 } 58 } 59 }, 60 "body": { 61 "type": "TSModuleBlock", 62 "body": [ 63 { 64 "type": "ExportNamedDeclaration", 65 "declaration": { 66 "type": "TSTypeAliasDeclaration", 67 "id": { 68 "type": "Identifier", 69 "name": "a", 70 "loc": { 71 "start": { 72 "line": 20, 73 "column": 17 74 }, 75 "end": { 76 "line": 20, 77 "column": 18 78 } 79 } 80 }, 81 "typeAnnotation": { 82 "type": "TSStringKeyword", 83 "loc": { 84 "start": { 85 "line": 20, 86 "column": 21 87 }, 88 "end": { 89 "line": 20, 90 "column": 27 91 } 92 } 93 }, 94 "loc": { 95 "start": { 96 "line": 20, 97 "column": 12 98 }, 99 "end": { 100 "line": 21, 101 "column": 2 102 } 103 } 104 }, 105 "source": null, 106 "specifiers": [], 107 "loc": { 108 "start": { 109 "line": 20, 110 "column": 5 111 }, 112 "end": { 113 "line": 21, 114 "column": 2 115 } 116 } 117 } 118 ], 119 "loc": { 120 "start": { 121 "line": 19, 122 "column": 14 123 }, 124 "end": { 125 "line": 21, 126 "column": 2 127 } 128 } 129 }, 130 "declare": false, 131 "global": false, 132 "loc": { 133 "start": { 134 "line": 19, 135 "column": 1 136 }, 137 "end": { 138 "line": 23, 139 "column": 10 140 } 141 } 142 }, 143 { 144 "type": "TSInterfaceDeclaration", 145 "body": { 146 "type": "TSInterfaceBody", 147 "body": [ 148 { 149 "type": "TSIndexSignature", 150 "parameters": { 151 "type": "Identifier", 152 "name": "k1", 153 "typeAnnotation": { 154 "type": "TSStringKeyword", 155 "loc": { 156 "start": { 157 "line": 24, 158 "column": 10 159 }, 160 "end": { 161 "line": 24, 162 "column": 16 163 } 164 } 165 }, 166 "loc": { 167 "start": { 168 "line": 24, 169 "column": 6 170 }, 171 "end": { 172 "line": 24, 173 "column": 8 174 } 175 } 176 }, 177 "typeAnnotation": { 178 "type": "TSBooleanKeyword", 179 "loc": { 180 "start": { 181 "line": 24, 182 "column": 19 183 }, 184 "end": { 185 "line": 24, 186 "column": 26 187 } 188 } 189 }, 190 "readonly": false, 191 "static": false, 192 "loc": { 193 "start": { 194 "line": 24, 195 "column": 5 196 }, 197 "end": { 198 "line": 24, 199 "column": 27 200 } 201 } 202 }, 203 { 204 "type": "TSIndexSignature", 205 "parameters": { 206 "type": "Identifier", 207 "name": "k2", 208 "typeAnnotation": { 209 "type": "TSNumberKeyword", 210 "loc": { 211 "start": { 212 "line": 25, 213 "column": 10 214 }, 215 "end": { 216 "line": 25, 217 "column": 16 218 } 219 } 220 }, 221 "loc": { 222 "start": { 223 "line": 25, 224 "column": 6 225 }, 226 "end": { 227 "line": 25, 228 "column": 8 229 } 230 } 231 }, 232 "typeAnnotation": { 233 "type": "TSBooleanKeyword", 234 "loc": { 235 "start": { 236 "line": 25, 237 "column": 19 238 }, 239 "end": { 240 "line": 25, 241 "column": 26 242 } 243 } 244 }, 245 "readonly": false, 246 "static": false, 247 "loc": { 248 "start": { 249 "line": 25, 250 "column": 5 251 }, 252 "end": { 253 "line": 25, 254 "column": 27 255 } 256 } 257 }, 258 { 259 "type": "TSIndexSignature", 260 "parameters": { 261 "type": "Identifier", 262 "name": "k3", 263 "typeAnnotation": { 264 "type": "TSSymbolKeyword", 265 "loc": { 266 "start": { 267 "line": 26, 268 "column": 10 269 }, 270 "end": { 271 "line": 26, 272 "column": 16 273 } 274 } 275 }, 276 "loc": { 277 "start": { 278 "line": 26, 279 "column": 6 280 }, 281 "end": { 282 "line": 26, 283 "column": 8 284 } 285 } 286 }, 287 "typeAnnotation": { 288 "type": "TSBooleanKeyword", 289 "loc": { 290 "start": { 291 "line": 26, 292 "column": 19 293 }, 294 "end": { 295 "line": 26, 296 "column": 26 297 } 298 } 299 }, 300 "readonly": false, 301 "static": false, 302 "loc": { 303 "start": { 304 "line": 26, 305 "column": 5 306 }, 307 "end": { 308 "line": 26, 309 "column": 27 310 } 311 } 312 }, 313 { 314 "type": "TSIndexSignature", 315 "parameters": { 316 "type": "Identifier", 317 "name": "k4", 318 "typeAnnotation": { 319 "type": "TSTemplateLiteralType", 320 "references": [ 321 { 322 "type": "TSStringKeyword", 323 "loc": { 324 "start": { 325 "line": 27, 326 "column": 29 327 }, 328 "end": { 329 "line": 27, 330 "column": 35 331 } 332 } 333 } 334 ], 335 "quasis": [ 336 { 337 "type": "TemplateElement", 338 "value": { 339 "raw": "templateLiteral-", 340 "cooked": "templateLiteral-" 341 }, 342 "loc": { 343 "start": { 344 "line": 27, 345 "column": 11 346 }, 347 "end": { 348 "line": 27, 349 "column": 27 350 } 351 } 352 }, 353 { 354 "type": "TemplateElement", 355 "value": { 356 "raw": "", 357 "cooked": "" 358 }, 359 "loc": { 360 "start": { 361 "line": 27, 362 "column": 36 363 }, 364 "end": { 365 "line": 27, 366 "column": 36 367 } 368 } 369 } 370 ], 371 "loc": { 372 "start": { 373 "line": 27, 374 "column": 10 375 }, 376 "end": { 377 "line": 27, 378 "column": 37 379 } 380 } 381 }, 382 "loc": { 383 "start": { 384 "line": 27, 385 "column": 6 386 }, 387 "end": { 388 "line": 27, 389 "column": 8 390 } 391 } 392 }, 393 "typeAnnotation": { 394 "type": "TSBooleanKeyword", 395 "loc": { 396 "start": { 397 "line": 27, 398 "column": 40 399 }, 400 "end": { 401 "line": 27, 402 "column": 47 403 } 404 } 405 }, 406 "readonly": false, 407 "static": false, 408 "loc": { 409 "start": { 410 "line": 27, 411 "column": 5 412 }, 413 "end": { 414 "line": 27, 415 "column": 48 416 } 417 } 418 } 419 ], 420 "loc": { 421 "start": { 422 "line": 23, 423 "column": 14 424 }, 425 "end": { 426 "line": 28, 427 "column": 2 428 } 429 } 430 }, 431 "id": { 432 "type": "Identifier", 433 "name": "I1", 434 "loc": { 435 "start": { 436 "line": 23, 437 "column": 11 438 }, 439 "end": { 440 "line": 23, 441 "column": 13 442 } 443 } 444 }, 445 "extends": [], 446 "loc": { 447 "start": { 448 "line": 23, 449 "column": 1 450 }, 451 "end": { 452 "line": 28, 453 "column": 2 454 } 455 } 456 }, 457 { 458 "type": "TSInterfaceDeclaration", 459 "body": { 460 "type": "TSInterfaceBody", 461 "body": [ 462 { 463 "type": "TSIndexSignature", 464 "parameters": { 465 "type": "Identifier", 466 "name": "k1", 467 "typeAnnotation": { 468 "type": "TSUnionType", 469 "types": [ 470 { 471 "type": "TSNumberKeyword", 472 "loc": { 473 "start": { 474 "line": 31, 475 "column": 10 476 }, 477 "end": { 478 "line": 31, 479 "column": 16 480 } 481 } 482 }, 483 { 484 "type": "TSTypeReference", 485 "typeName": { 486 "type": "TSQualifiedName", 487 "left": { 488 "type": "Identifier", 489 "name": "ns", 490 "loc": { 491 "start": { 492 "line": 31, 493 "column": 19 494 }, 495 "end": { 496 "line": 31, 497 "column": 21 498 } 499 } 500 }, 501 "right": { 502 "type": "Identifier", 503 "name": "a", 504 "loc": { 505 "start": { 506 "line": 31, 507 "column": 22 508 }, 509 "end": { 510 "line": 31, 511 "column": 23 512 } 513 } 514 }, 515 "loc": { 516 "start": { 517 "line": 31, 518 "column": 19 519 }, 520 "end": { 521 "line": 31, 522 "column": 25 523 } 524 } 525 }, 526 "loc": { 527 "start": { 528 "line": 31, 529 "column": 19 530 }, 531 "end": { 532 "line": 31, 533 "column": 25 534 } 535 } 536 }, 537 { 538 "type": "TSTypeReference", 539 "typeName": { 540 "type": "Identifier", 541 "name": "a", 542 "loc": { 543 "start": { 544 "line": 31, 545 "column": 26 546 }, 547 "end": { 548 "line": 31, 549 "column": 27 550 } 551 } 552 }, 553 "loc": { 554 "start": { 555 "line": 31, 556 "column": 26 557 }, 558 "end": { 559 "line": 31, 560 "column": 27 561 } 562 } 563 } 564 ], 565 "loc": { 566 "start": { 567 "line": 31, 568 "column": 10 569 }, 570 "end": { 571 "line": 31, 572 "column": 27 573 } 574 } 575 }, 576 "loc": { 577 "start": { 578 "line": 31, 579 "column": 6 580 }, 581 "end": { 582 "line": 31, 583 "column": 8 584 } 585 } 586 }, 587 "typeAnnotation": { 588 "type": "TSBooleanKeyword", 589 "loc": { 590 "start": { 591 "line": 31, 592 "column": 30 593 }, 594 "end": { 595 "line": 31, 596 "column": 37 597 } 598 } 599 }, 600 "readonly": false, 601 "static": false, 602 "loc": { 603 "start": { 604 "line": 31, 605 "column": 5 606 }, 607 "end": { 608 "line": 31, 609 "column": 38 610 } 611 } 612 } 613 ], 614 "loc": { 615 "start": { 616 "line": 30, 617 "column": 14 618 }, 619 "end": { 620 "line": 32, 621 "column": 2 622 } 623 } 624 }, 625 "id": { 626 "type": "Identifier", 627 "name": "I2", 628 "loc": { 629 "start": { 630 "line": 30, 631 "column": 11 632 }, 633 "end": { 634 "line": 30, 635 "column": 13 636 } 637 } 638 }, 639 "extends": [], 640 "loc": { 641 "start": { 642 "line": 30, 643 "column": 1 644 }, 645 "end": { 646 "line": 32, 647 "column": 2 648 } 649 } 650 }, 651 { 652 "type": "ClassDeclaration", 653 "definition": { 654 "id": { 655 "type": "Identifier", 656 "name": "A", 657 "loc": { 658 "start": { 659 "line": 34, 660 "column": 7 661 }, 662 "end": { 663 "line": 34, 664 "column": 8 665 } 666 } 667 }, 668 "superClass": null, 669 "implements": [], 670 "constructor": { 671 "type": "MethodDefinition", 672 "key": { 673 "type": "Identifier", 674 "name": "constructor", 675 "loc": { 676 "start": { 677 "line": 1, 678 "column": 1 679 }, 680 "end": { 681 "line": 1, 682 "column": 1 683 } 684 } 685 }, 686 "kind": "constructor", 687 "static": false, 688 "optional": false, 689 "computed": false, 690 "value": { 691 "type": "FunctionExpression", 692 "function": { 693 "type": "ScriptFunction", 694 "id": null, 695 "generator": false, 696 "async": false, 697 "expression": false, 698 "params": [], 699 "body": { 700 "type": "BlockStatement", 701 "statements": [], 702 "loc": { 703 "start": { 704 "line": 1, 705 "column": 1 706 }, 707 "end": { 708 "line": 1, 709 "column": 1 710 } 711 } 712 }, 713 "loc": { 714 "start": { 715 "line": 1, 716 "column": 1 717 }, 718 "end": { 719 "line": 1, 720 "column": 1 721 } 722 } 723 }, 724 "loc": { 725 "start": { 726 "line": 1, 727 "column": 1 728 }, 729 "end": { 730 "line": 1, 731 "column": 1 732 } 733 } 734 }, 735 "overloads": [], 736 "decorators": [], 737 "loc": { 738 "start": { 739 "line": 34, 740 "column": 1 741 }, 742 "end": { 743 "line": 36, 744 "column": 2 745 } 746 } 747 }, 748 "body": [], 749 "indexSignatures": [ 750 { 751 "type": "TSIndexSignature", 752 "parameters": { 753 "type": "Identifier", 754 "name": "k1", 755 "typeAnnotation": { 756 "type": "TSUnionType", 757 "types": [ 758 { 759 "type": "TSStringKeyword", 760 "loc": { 761 "start": { 762 "line": 35, 763 "column": 10 764 }, 765 "end": { 766 "line": 35, 767 "column": 16 768 } 769 } 770 }, 771 { 772 "type": "TSNumberKeyword", 773 "loc": { 774 "start": { 775 "line": 35, 776 "column": 19 777 }, 778 "end": { 779 "line": 35, 780 "column": 25 781 } 782 } 783 }, 784 { 785 "type": "TSSymbolKeyword", 786 "loc": { 787 "start": { 788 "line": 35, 789 "column": 28 790 }, 791 "end": { 792 "line": 35, 793 "column": 34 794 } 795 } 796 }, 797 { 798 "type": "TSTemplateLiteralType", 799 "references": [ 800 { 801 "type": "TSStringKeyword", 802 "loc": { 803 "start": { 804 "line": 35, 805 "column": 56 806 }, 807 "end": { 808 "line": 35, 809 "column": 62 810 } 811 } 812 } 813 ], 814 "quasis": [ 815 { 816 "type": "TemplateElement", 817 "value": { 818 "raw": "templateLiteral-", 819 "cooked": "templateLiteral-" 820 }, 821 "loc": { 822 "start": { 823 "line": 35, 824 "column": 38 825 }, 826 "end": { 827 "line": 35, 828 "column": 54 829 } 830 } 831 }, 832 { 833 "type": "TemplateElement", 834 "value": { 835 "raw": "", 836 "cooked": "" 837 }, 838 "loc": { 839 "start": { 840 "line": 35, 841 "column": 63 842 }, 843 "end": { 844 "line": 35, 845 "column": 63 846 } 847 } 848 } 849 ], 850 "loc": { 851 "start": { 852 "line": 35, 853 "column": 37 854 }, 855 "end": { 856 "line": 35, 857 "column": 64 858 } 859 } 860 } 861 ], 862 "loc": { 863 "start": { 864 "line": 35, 865 "column": 10 866 }, 867 "end": { 868 "line": 35, 869 "column": 64 870 } 871 } 872 }, 873 "loc": { 874 "start": { 875 "line": 35, 876 "column": 6 877 }, 878 "end": { 879 "line": 35, 880 "column": 8 881 } 882 } 883 }, 884 "typeAnnotation": { 885 "type": "TSBooleanKeyword", 886 "loc": { 887 "start": { 888 "line": 35, 889 "column": 67 890 }, 891 "end": { 892 "line": 35, 893 "column": 74 894 } 895 } 896 }, 897 "readonly": false, 898 "static": false, 899 "loc": { 900 "start": { 901 "line": 35, 902 "column": 5 903 }, 904 "end": { 905 "line": 35, 906 "column": 74 907 } 908 } 909 } 910 ], 911 "loc": { 912 "start": { 913 "line": 34, 914 "column": 9 915 }, 916 "end": { 917 "line": 36, 918 "column": 2 919 } 920 } 921 }, 922 "decorators": [], 923 "loc": { 924 "start": { 925 "line": 34, 926 "column": 1 927 }, 928 "end": { 929 "line": 36, 930 "column": 2 931 } 932 } 933 }, 934 { 935 "type": "VariableDeclaration", 936 "declarations": [ 937 { 938 "type": "VariableDeclarator", 939 "id": { 940 "type": "Identifier", 941 "name": "x", 942 "typeAnnotation": { 943 "type": "TSTypeLiteral", 944 "members": [ 945 { 946 "type": "TSIndexSignature", 947 "parameters": { 948 "type": "Identifier", 949 "name": "k", 950 "typeAnnotation": { 951 "type": "TSUnionType", 952 "types": [ 953 { 954 "type": "TSStringKeyword", 955 "loc": { 956 "start": { 957 "line": 38, 958 "column": 16 959 }, 960 "end": { 961 "line": 38, 962 "column": 22 963 } 964 } 965 }, 966 { 967 "type": "TSNumberKeyword", 968 "loc": { 969 "start": { 970 "line": 38, 971 "column": 25 972 }, 973 "end": { 974 "line": 38, 975 "column": 31 976 } 977 } 978 }, 979 { 980 "type": "TSSymbolKeyword", 981 "loc": { 982 "start": { 983 "line": 38, 984 "column": 34 985 }, 986 "end": { 987 "line": 38, 988 "column": 40 989 } 990 } 991 }, 992 { 993 "type": "TSTemplateLiteralType", 994 "references": [ 995 { 996 "type": "TSStringKeyword", 997 "loc": { 998 "start": { 999 "line": 38, 1000 "column": 62 1001 }, 1002 "end": { 1003 "line": 38, 1004 "column": 68 1005 } 1006 } 1007 } 1008 ], 1009 "quasis": [ 1010 { 1011 "type": "TemplateElement", 1012 "value": { 1013 "raw": "templateLiteral-", 1014 "cooked": "templateLiteral-" 1015 }, 1016 "loc": { 1017 "start": { 1018 "line": 38, 1019 "column": 44 1020 }, 1021 "end": { 1022 "line": 38, 1023 "column": 60 1024 } 1025 } 1026 }, 1027 { 1028 "type": "TemplateElement", 1029 "value": { 1030 "raw": "", 1031 "cooked": "" 1032 }, 1033 "loc": { 1034 "start": { 1035 "line": 38, 1036 "column": 69 1037 }, 1038 "end": { 1039 "line": 38, 1040 "column": 69 1041 } 1042 } 1043 } 1044 ], 1045 "loc": { 1046 "start": { 1047 "line": 38, 1048 "column": 43 1049 }, 1050 "end": { 1051 "line": 38, 1052 "column": 70 1053 } 1054 } 1055 } 1056 ], 1057 "loc": { 1058 "start": { 1059 "line": 38, 1060 "column": 16 1061 }, 1062 "end": { 1063 "line": 38, 1064 "column": 70 1065 } 1066 } 1067 }, 1068 "loc": { 1069 "start": { 1070 "line": 38, 1071 "column": 13 1072 }, 1073 "end": { 1074 "line": 38, 1075 "column": 14 1076 } 1077 } 1078 }, 1079 "typeAnnotation": { 1080 "type": "TSBooleanKeyword", 1081 "loc": { 1082 "start": { 1083 "line": 38, 1084 "column": 73 1085 }, 1086 "end": { 1087 "line": 38, 1088 "column": 80 1089 } 1090 } 1091 }, 1092 "readonly": false, 1093 "static": false, 1094 "loc": { 1095 "start": { 1096 "line": 38, 1097 "column": 12 1098 }, 1099 "end": { 1100 "line": 38, 1101 "column": 82 1102 } 1103 } 1104 } 1105 ], 1106 "loc": { 1107 "start": { 1108 "line": 38, 1109 "column": 10 1110 }, 1111 "end": { 1112 "line": 38, 1113 "column": 82 1114 } 1115 } 1116 }, 1117 "loc": { 1118 "start": { 1119 "line": 38, 1120 "column": 7 1121 }, 1122 "end": { 1123 "line": 38, 1124 "column": 8 1125 } 1126 } 1127 }, 1128 "init": { 1129 "type": "ObjectExpression", 1130 "properties": [], 1131 "loc": { 1132 "start": { 1133 "line": 38, 1134 "column": 85 1135 }, 1136 "end": { 1137 "line": 38, 1138 "column": 87 1139 } 1140 } 1141 }, 1142 "loc": { 1143 "start": { 1144 "line": 38, 1145 "column": 7 1146 }, 1147 "end": { 1148 "line": 38, 1149 "column": 87 1150 } 1151 } 1152 } 1153 ], 1154 "kind": "const", 1155 "loc": { 1156 "start": { 1157 "line": 38, 1158 "column": 1 1159 }, 1160 "end": { 1161 "line": 38, 1162 "column": 88 1163 } 1164 } 1165 } 1166 ], 1167 "loc": { 1168 "start": { 1169 "line": 1, 1170 "column": 1 1171 }, 1172 "end": { 1173 "line": 39, 1174 "column": 1 1175 } 1176 } 1177} 1178