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 "annotations": [], 738 "loc": { 739 "start": { 740 "line": 34, 741 "column": 1 742 }, 743 "end": { 744 "line": 36, 745 "column": 2 746 } 747 } 748 }, 749 "body": [], 750 "indexSignatures": [ 751 { 752 "type": "TSIndexSignature", 753 "parameters": { 754 "type": "Identifier", 755 "name": "k1", 756 "typeAnnotation": { 757 "type": "TSUnionType", 758 "types": [ 759 { 760 "type": "TSStringKeyword", 761 "loc": { 762 "start": { 763 "line": 35, 764 "column": 10 765 }, 766 "end": { 767 "line": 35, 768 "column": 16 769 } 770 } 771 }, 772 { 773 "type": "TSNumberKeyword", 774 "loc": { 775 "start": { 776 "line": 35, 777 "column": 19 778 }, 779 "end": { 780 "line": 35, 781 "column": 25 782 } 783 } 784 }, 785 { 786 "type": "TSSymbolKeyword", 787 "loc": { 788 "start": { 789 "line": 35, 790 "column": 28 791 }, 792 "end": { 793 "line": 35, 794 "column": 34 795 } 796 } 797 }, 798 { 799 "type": "TSTemplateLiteralType", 800 "references": [ 801 { 802 "type": "TSStringKeyword", 803 "loc": { 804 "start": { 805 "line": 35, 806 "column": 56 807 }, 808 "end": { 809 "line": 35, 810 "column": 62 811 } 812 } 813 } 814 ], 815 "quasis": [ 816 { 817 "type": "TemplateElement", 818 "value": { 819 "raw": "templateLiteral-", 820 "cooked": "templateLiteral-" 821 }, 822 "loc": { 823 "start": { 824 "line": 35, 825 "column": 38 826 }, 827 "end": { 828 "line": 35, 829 "column": 54 830 } 831 } 832 }, 833 { 834 "type": "TemplateElement", 835 "value": { 836 "raw": "", 837 "cooked": "" 838 }, 839 "loc": { 840 "start": { 841 "line": 35, 842 "column": 63 843 }, 844 "end": { 845 "line": 35, 846 "column": 63 847 } 848 } 849 } 850 ], 851 "loc": { 852 "start": { 853 "line": 35, 854 "column": 37 855 }, 856 "end": { 857 "line": 35, 858 "column": 64 859 } 860 } 861 } 862 ], 863 "loc": { 864 "start": { 865 "line": 35, 866 "column": 10 867 }, 868 "end": { 869 "line": 35, 870 "column": 64 871 } 872 } 873 }, 874 "loc": { 875 "start": { 876 "line": 35, 877 "column": 6 878 }, 879 "end": { 880 "line": 35, 881 "column": 8 882 } 883 } 884 }, 885 "typeAnnotation": { 886 "type": "TSBooleanKeyword", 887 "loc": { 888 "start": { 889 "line": 35, 890 "column": 67 891 }, 892 "end": { 893 "line": 35, 894 "column": 74 895 } 896 } 897 }, 898 "readonly": false, 899 "static": false, 900 "loc": { 901 "start": { 902 "line": 35, 903 "column": 5 904 }, 905 "end": { 906 "line": 35, 907 "column": 74 908 } 909 } 910 } 911 ], 912 "loc": { 913 "start": { 914 "line": 34, 915 "column": 9 916 }, 917 "end": { 918 "line": 36, 919 "column": 2 920 } 921 } 922 }, 923 "decorators": [], 924 "isAnnotationDeclaration": false, 925 "loc": { 926 "start": { 927 "line": 34, 928 "column": 1 929 }, 930 "end": { 931 "line": 36, 932 "column": 2 933 } 934 } 935 }, 936 { 937 "type": "VariableDeclaration", 938 "declarations": [ 939 { 940 "type": "VariableDeclarator", 941 "id": { 942 "type": "Identifier", 943 "name": "x", 944 "typeAnnotation": { 945 "type": "TSTypeLiteral", 946 "members": [ 947 { 948 "type": "TSIndexSignature", 949 "parameters": { 950 "type": "Identifier", 951 "name": "k", 952 "typeAnnotation": { 953 "type": "TSUnionType", 954 "types": [ 955 { 956 "type": "TSStringKeyword", 957 "loc": { 958 "start": { 959 "line": 38, 960 "column": 16 961 }, 962 "end": { 963 "line": 38, 964 "column": 22 965 } 966 } 967 }, 968 { 969 "type": "TSNumberKeyword", 970 "loc": { 971 "start": { 972 "line": 38, 973 "column": 25 974 }, 975 "end": { 976 "line": 38, 977 "column": 31 978 } 979 } 980 }, 981 { 982 "type": "TSSymbolKeyword", 983 "loc": { 984 "start": { 985 "line": 38, 986 "column": 34 987 }, 988 "end": { 989 "line": 38, 990 "column": 40 991 } 992 } 993 }, 994 { 995 "type": "TSTemplateLiteralType", 996 "references": [ 997 { 998 "type": "TSStringKeyword", 999 "loc": { 1000 "start": { 1001 "line": 38, 1002 "column": 62 1003 }, 1004 "end": { 1005 "line": 38, 1006 "column": 68 1007 } 1008 } 1009 } 1010 ], 1011 "quasis": [ 1012 { 1013 "type": "TemplateElement", 1014 "value": { 1015 "raw": "templateLiteral-", 1016 "cooked": "templateLiteral-" 1017 }, 1018 "loc": { 1019 "start": { 1020 "line": 38, 1021 "column": 44 1022 }, 1023 "end": { 1024 "line": 38, 1025 "column": 60 1026 } 1027 } 1028 }, 1029 { 1030 "type": "TemplateElement", 1031 "value": { 1032 "raw": "", 1033 "cooked": "" 1034 }, 1035 "loc": { 1036 "start": { 1037 "line": 38, 1038 "column": 69 1039 }, 1040 "end": { 1041 "line": 38, 1042 "column": 69 1043 } 1044 } 1045 } 1046 ], 1047 "loc": { 1048 "start": { 1049 "line": 38, 1050 "column": 43 1051 }, 1052 "end": { 1053 "line": 38, 1054 "column": 70 1055 } 1056 } 1057 } 1058 ], 1059 "loc": { 1060 "start": { 1061 "line": 38, 1062 "column": 16 1063 }, 1064 "end": { 1065 "line": 38, 1066 "column": 70 1067 } 1068 } 1069 }, 1070 "loc": { 1071 "start": { 1072 "line": 38, 1073 "column": 13 1074 }, 1075 "end": { 1076 "line": 38, 1077 "column": 14 1078 } 1079 } 1080 }, 1081 "typeAnnotation": { 1082 "type": "TSBooleanKeyword", 1083 "loc": { 1084 "start": { 1085 "line": 38, 1086 "column": 73 1087 }, 1088 "end": { 1089 "line": 38, 1090 "column": 80 1091 } 1092 } 1093 }, 1094 "readonly": false, 1095 "static": false, 1096 "loc": { 1097 "start": { 1098 "line": 38, 1099 "column": 12 1100 }, 1101 "end": { 1102 "line": 38, 1103 "column": 82 1104 } 1105 } 1106 } 1107 ], 1108 "loc": { 1109 "start": { 1110 "line": 38, 1111 "column": 10 1112 }, 1113 "end": { 1114 "line": 38, 1115 "column": 82 1116 } 1117 } 1118 }, 1119 "loc": { 1120 "start": { 1121 "line": 38, 1122 "column": 7 1123 }, 1124 "end": { 1125 "line": 38, 1126 "column": 8 1127 } 1128 } 1129 }, 1130 "init": { 1131 "type": "ObjectExpression", 1132 "properties": [], 1133 "loc": { 1134 "start": { 1135 "line": 38, 1136 "column": 85 1137 }, 1138 "end": { 1139 "line": 38, 1140 "column": 87 1141 } 1142 } 1143 }, 1144 "loc": { 1145 "start": { 1146 "line": 38, 1147 "column": 7 1148 }, 1149 "end": { 1150 "line": 38, 1151 "column": 87 1152 } 1153 } 1154 } 1155 ], 1156 "kind": "const", 1157 "loc": { 1158 "start": { 1159 "line": 38, 1160 "column": 1 1161 }, 1162 "end": { 1163 "line": 38, 1164 "column": 88 1165 } 1166 } 1167 } 1168 ], 1169 "loc": { 1170 "start": { 1171 "line": 1, 1172 "column": 1 1173 }, 1174 "end": { 1175 "line": 39, 1176 "column": 1 1177 } 1178 } 1179} 1180