1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "FunctionDeclaration", 6 "function": { 7 "type": "ScriptFunction", 8 "id": { 9 "type": "Identifier", 10 "name": "func1", 11 "loc": { 12 "start": { 13 "line": 17, 14 "column": 10 15 }, 16 "end": { 17 "line": 17, 18 "column": 15 19 } 20 } 21 }, 22 "generator": false, 23 "async": false, 24 "expression": false, 25 "params": [ 26 { 27 "type": "Identifier", 28 "name": "arg", 29 "typeAnnotation": { 30 "type": "TSTypeReference", 31 "typeName": { 32 "type": "Identifier", 33 "name": "Type", 34 "loc": { 35 "start": { 36 "line": 17, 37 "column": 59 38 }, 39 "end": { 40 "line": 17, 41 "column": 63 42 } 43 } 44 }, 45 "loc": { 46 "start": { 47 "line": 17, 48 "column": 59 49 }, 50 "end": { 51 "line": 17, 52 "column": 63 53 } 54 } 55 }, 56 "loc": { 57 "start": { 58 "line": 17, 59 "column": 54 60 }, 61 "end": { 62 "line": 17, 63 "column": 57 64 } 65 } 66 } 67 ], 68 "returnType": { 69 "type": "TSTypeReference", 70 "typeName": { 71 "type": "Identifier", 72 "name": "Type", 73 "loc": { 74 "start": { 75 "line": 17, 76 "column": 66 77 }, 78 "end": { 79 "line": 17, 80 "column": 70 81 } 82 } 83 }, 84 "loc": { 85 "start": { 86 "line": 17, 87 "column": 66 88 }, 89 "end": { 90 "line": 17, 91 "column": 70 92 } 93 } 94 }, 95 "typeParameters": { 96 "type": "TSTypeParameterDeclaration", 97 "params": [ 98 { 99 "type": "TSTypeParameter", 100 "name": { 101 "type": "Identifier", 102 "name": "Type", 103 "loc": { 104 "start": { 105 "line": 17, 106 "column": 16 107 }, 108 "end": { 109 "line": 17, 110 "column": 20 111 } 112 } 113 }, 114 "in": false, 115 "out": false, 116 "loc": { 117 "start": { 118 "line": 17, 119 "column": 16 120 }, 121 "end": { 122 "line": 17, 123 "column": 21 124 } 125 } 126 }, 127 { 128 "type": "TSTypeParameter", 129 "name": { 130 "type": "Identifier", 131 "name": "A", 132 "loc": { 133 "start": { 134 "line": 17, 135 "column": 22 136 }, 137 "end": { 138 "line": 17, 139 "column": 23 140 } 141 } 142 }, 143 "in": false, 144 "out": false, 145 "loc": { 146 "start": { 147 "line": 17, 148 "column": 22 149 }, 150 "end": { 151 "line": 17, 152 "column": 24 153 } 154 } 155 }, 156 { 157 "type": "TSTypeParameter", 158 "name": { 159 "type": "Identifier", 160 "name": "B", 161 "loc": { 162 "start": { 163 "line": 17, 164 "column": 25 165 }, 166 "end": { 167 "line": 17, 168 "column": 26 169 } 170 } 171 }, 172 "constraint": { 173 "type": "TSTypeOperator", 174 "operator": "readonly", 175 "typeAnnotation": { 176 "type": "TSArrayType", 177 "elementType": { 178 "type": "TSNumberKeyword", 179 "loc": { 180 "start": { 181 "line": 17, 182 "column": 44 183 }, 184 "end": { 185 "line": 17, 186 "column": 50 187 } 188 } 189 }, 190 "loc": { 191 "start": { 192 "line": 17, 193 "column": 44 194 }, 195 "end": { 196 "line": 17, 197 "column": 52 198 } 199 } 200 }, 201 "loc": { 202 "start": { 203 "line": 17, 204 "column": 35 205 }, 206 "end": { 207 "line": 17, 208 "column": 52 209 } 210 } 211 }, 212 "in": false, 213 "out": false, 214 "loc": { 215 "start": { 216 "line": 17, 217 "column": 25 218 }, 219 "end": { 220 "line": 17, 221 "column": 53 222 } 223 } 224 } 225 ], 226 "loc": { 227 "start": { 228 "line": 17, 229 "column": 15 230 }, 231 "end": { 232 "line": 17, 233 "column": 53 234 } 235 } 236 }, 237 "body": { 238 "type": "BlockStatement", 239 "statements": [ 240 { 241 "type": "ReturnStatement", 242 "argument": { 243 "type": "Identifier", 244 "name": "arg", 245 "loc": { 246 "start": { 247 "line": 18, 248 "column": 12 249 }, 250 "end": { 251 "line": 18, 252 "column": 15 253 } 254 } 255 }, 256 "loc": { 257 "start": { 258 "line": 18, 259 "column": 5 260 }, 261 "end": { 262 "line": 18, 263 "column": 16 264 } 265 } 266 } 267 ], 268 "loc": { 269 "start": { 270 "line": 17, 271 "column": 71 272 }, 273 "end": { 274 "line": 19, 275 "column": 2 276 } 277 } 278 }, 279 "loc": { 280 "start": { 281 "line": 17, 282 "column": 1 283 }, 284 "end": { 285 "line": 19, 286 "column": 2 287 } 288 } 289 }, 290 "loc": { 291 "start": { 292 "line": 17, 293 "column": 1 294 }, 295 "end": { 296 "line": 19, 297 "column": 2 298 } 299 } 300 }, 301 { 302 "type": "FunctionDeclaration", 303 "function": { 304 "type": "ScriptFunction", 305 "id": { 306 "type": "Identifier", 307 "name": "func2", 308 "loc": { 309 "start": { 310 "line": 21, 311 "column": 10 312 }, 313 "end": { 314 "line": 21, 315 "column": 15 316 } 317 } 318 }, 319 "generator": false, 320 "async": false, 321 "expression": false, 322 "params": [], 323 "typeParameters": { 324 "type": "TSTypeParameterDeclaration", 325 "params": [ 326 { 327 "type": "TSTypeParameter", 328 "name": { 329 "type": "Identifier", 330 "name": "A", 331 "loc": { 332 "start": { 333 "line": 21, 334 "column": 16 335 }, 336 "end": { 337 "line": 21, 338 "column": 17 339 } 340 } 341 }, 342 "constraint": { 343 "type": "TSTypeLiteral", 344 "members": [ 345 { 346 "type": "TSPropertySignature", 347 "computed": false, 348 "optional": false, 349 "readonly": false, 350 "key": { 351 "type": "Identifier", 352 "name": "a", 353 "loc": { 354 "start": { 355 "line": 21, 356 "column": 28 357 }, 358 "end": { 359 "line": 21, 360 "column": 29 361 } 362 } 363 }, 364 "typeAnnotation": { 365 "type": "TSNumberKeyword", 366 "loc": { 367 "start": { 368 "line": 21, 369 "column": 31 370 }, 371 "end": { 372 "line": 21, 373 "column": 37 374 } 375 } 376 }, 377 "loc": { 378 "start": { 379 "line": 21, 380 "column": 28 381 }, 382 "end": { 383 "line": 21, 384 "column": 38 385 } 386 } 387 }, 388 { 389 "type": "TSPropertySignature", 390 "computed": false, 391 "optional": false, 392 "readonly": false, 393 "key": { 394 "type": "Identifier", 395 "name": "b", 396 "loc": { 397 "start": { 398 "line": 21, 399 "column": 39 400 }, 401 "end": { 402 "line": 21, 403 "column": 40 404 } 405 } 406 }, 407 "typeAnnotation": { 408 "type": "TSStringKeyword", 409 "loc": { 410 "start": { 411 "line": 21, 412 "column": 42 413 }, 414 "end": { 415 "line": 21, 416 "column": 48 417 } 418 } 419 }, 420 "loc": { 421 "start": { 422 "line": 21, 423 "column": 39 424 }, 425 "end": { 426 "line": 21, 427 "column": 50 428 } 429 } 430 } 431 ], 432 "loc": { 433 "start": { 434 "line": 21, 435 "column": 26 436 }, 437 "end": { 438 "line": 21, 439 "column": 50 440 } 441 } 442 }, 443 "in": false, 444 "out": false, 445 "loc": { 446 "start": { 447 "line": 21, 448 "column": 16 449 }, 450 "end": { 451 "line": 21, 452 "column": 51 453 } 454 } 455 } 456 ], 457 "loc": { 458 "start": { 459 "line": 21, 460 "column": 15 461 }, 462 "end": { 463 "line": 21, 464 "column": 51 465 } 466 } 467 }, 468 "body": { 469 "type": "BlockStatement", 470 "statements": [], 471 "loc": { 472 "start": { 473 "line": 21, 474 "column": 54 475 }, 476 "end": { 477 "line": 21, 478 "column": 57 479 } 480 } 481 }, 482 "loc": { 483 "start": { 484 "line": 21, 485 "column": 1 486 }, 487 "end": { 488 "line": 21, 489 "column": 57 490 } 491 } 492 }, 493 "loc": { 494 "start": { 495 "line": 21, 496 "column": 1 497 }, 498 "end": { 499 "line": 21, 500 "column": 57 501 } 502 } 503 }, 504 { 505 "type": "FunctionDeclaration", 506 "function": { 507 "type": "ScriptFunction", 508 "id": { 509 "type": "Identifier", 510 "name": "func3", 511 "loc": { 512 "start": { 513 "line": 23, 514 "column": 10 515 }, 516 "end": { 517 "line": 23, 518 "column": 15 519 } 520 } 521 }, 522 "generator": false, 523 "async": false, 524 "expression": false, 525 "params": [ 526 { 527 "type": "Identifier", 528 "name": "a", 529 "typeAnnotation": { 530 "type": "TSTypeReference", 531 "typeName": { 532 "type": "Identifier", 533 "name": "A", 534 "loc": { 535 "start": { 536 "line": 23, 537 "column": 90 538 }, 539 "end": { 540 "line": 23, 541 "column": 91 542 } 543 } 544 }, 545 "loc": { 546 "start": { 547 "line": 23, 548 "column": 90 549 }, 550 "end": { 551 "line": 23, 552 "column": 91 553 } 554 } 555 }, 556 "loc": { 557 "start": { 558 "line": 23, 559 "column": 87 560 }, 561 "end": { 562 "line": 23, 563 "column": 88 564 } 565 } 566 }, 567 { 568 "type": "Identifier", 569 "name": "b", 570 "typeAnnotation": { 571 "type": "TSStringKeyword", 572 "loc": { 573 "start": { 574 "line": 23, 575 "column": 96 576 }, 577 "end": { 578 "line": 23, 579 "column": 102 580 } 581 } 582 }, 583 "loc": { 584 "start": { 585 "line": 23, 586 "column": 93 587 }, 588 "end": { 589 "line": 23, 590 "column": 94 591 } 592 } 593 } 594 ], 595 "returnType": { 596 "type": "TSUnionType", 597 "types": [ 598 { 599 "type": "TSNumberKeyword", 600 "loc": { 601 "start": { 602 "line": 23, 603 "column": 105 604 }, 605 "end": { 606 "line": 23, 607 "column": 111 608 } 609 } 610 }, 611 { 612 "type": "TSBooleanKeyword", 613 "loc": { 614 "start": { 615 "line": 23, 616 "column": 114 617 }, 618 "end": { 619 "line": 23, 620 "column": 121 621 } 622 } 623 } 624 ], 625 "loc": { 626 "start": { 627 "line": 23, 628 "column": 105 629 }, 630 "end": { 631 "line": 23, 632 "column": 121 633 } 634 } 635 }, 636 "typeParameters": { 637 "type": "TSTypeParameterDeclaration", 638 "params": [ 639 { 640 "type": "TSTypeParameter", 641 "name": { 642 "type": "Identifier", 643 "name": "A", 644 "loc": { 645 "start": { 646 "line": 23, 647 "column": 16 648 }, 649 "end": { 650 "line": 23, 651 "column": 17 652 } 653 } 654 }, 655 "constraint": { 656 "type": "TSTypeOperator", 657 "operator": "keyof", 658 "typeAnnotation": { 659 "type": "TSTypeLiteral", 660 "members": [ 661 { 662 "type": "TSPropertySignature", 663 "computed": false, 664 "optional": false, 665 "readonly": false, 666 "key": { 667 "type": "Identifier", 668 "name": "a", 669 "loc": { 670 "start": { 671 "line": 23, 672 "column": 34 673 }, 674 "end": { 675 "line": 23, 676 "column": 35 677 } 678 } 679 }, 680 "typeAnnotation": { 681 "type": "TSTypeLiteral", 682 "members": [ 683 { 684 "type": "TSPropertySignature", 685 "computed": false, 686 "optional": false, 687 "readonly": false, 688 "key": { 689 "type": "Identifier", 690 "name": "b", 691 "loc": { 692 "start": { 693 "line": 23, 694 "column": 39 695 }, 696 "end": { 697 "line": 23, 698 "column": 40 699 } 700 } 701 }, 702 "typeAnnotation": { 703 "type": "TSNumberKeyword", 704 "loc": { 705 "start": { 706 "line": 23, 707 "column": 42 708 }, 709 "end": { 710 "line": 23, 711 "column": 48 712 } 713 } 714 }, 715 "loc": { 716 "start": { 717 "line": 23, 718 "column": 39 719 }, 720 "end": { 721 "line": 23, 722 "column": 49 723 } 724 } 725 }, 726 { 727 "type": "TSPropertySignature", 728 "computed": false, 729 "optional": false, 730 "readonly": false, 731 "key": { 732 "type": "Identifier", 733 "name": "c", 734 "loc": { 735 "start": { 736 "line": 23, 737 "column": 50 738 }, 739 "end": { 740 "line": 23, 741 "column": 51 742 } 743 } 744 }, 745 "typeAnnotation": { 746 "type": "TSBooleanKeyword", 747 "loc": { 748 "start": { 749 "line": 23, 750 "column": 53 751 }, 752 "end": { 753 "line": 23, 754 "column": 60 755 } 756 } 757 }, 758 "loc": { 759 "start": { 760 "line": 23, 761 "column": 50 762 }, 763 "end": { 764 "line": 23, 765 "column": 62 766 } 767 } 768 } 769 ], 770 "loc": { 771 "start": { 772 "line": 23, 773 "column": 37 774 }, 775 "end": { 776 "line": 23, 777 "column": 62 778 } 779 } 780 }, 781 "loc": { 782 "start": { 783 "line": 23, 784 "column": 34 785 }, 786 "end": { 787 "line": 23, 788 "column": 63 789 } 790 } 791 }, 792 { 793 "type": "TSPropertySignature", 794 "computed": false, 795 "optional": false, 796 "readonly": false, 797 "key": { 798 "type": "Identifier", 799 "name": "b", 800 "loc": { 801 "start": { 802 "line": 23, 803 "column": 64 804 }, 805 "end": { 806 "line": 23, 807 "column": 65 808 } 809 } 810 }, 811 "typeAnnotation": { 812 "type": "TSTupleType", 813 "elementTypes": [ 814 { 815 "type": "TSNumberKeyword", 816 "loc": { 817 "start": { 818 "line": 23, 819 "column": 68 820 }, 821 "end": { 822 "line": 23, 823 "column": 74 824 } 825 } 826 }, 827 { 828 "type": "TSStringKeyword", 829 "loc": { 830 "start": { 831 "line": 23, 832 "column": 76 833 }, 834 "end": { 835 "line": 23, 836 "column": 82 837 } 838 } 839 } 840 ], 841 "loc": { 842 "start": { 843 "line": 23, 844 "column": 67 845 }, 846 "end": { 847 "line": 23, 848 "column": 83 849 } 850 } 851 }, 852 "loc": { 853 "start": { 854 "line": 23, 855 "column": 64 856 }, 857 "end": { 858 "line": 23, 859 "column": 85 860 } 861 } 862 } 863 ], 864 "loc": { 865 "start": { 866 "line": 23, 867 "column": 32 868 }, 869 "end": { 870 "line": 23, 871 "column": 85 872 } 873 } 874 }, 875 "loc": { 876 "start": { 877 "line": 23, 878 "column": 26 879 }, 880 "end": { 881 "line": 23, 882 "column": 85 883 } 884 } 885 }, 886 "in": false, 887 "out": false, 888 "loc": { 889 "start": { 890 "line": 23, 891 "column": 16 892 }, 893 "end": { 894 "line": 23, 895 "column": 86 896 } 897 } 898 } 899 ], 900 "loc": { 901 "start": { 902 "line": 23, 903 "column": 15 904 }, 905 "end": { 906 "line": 23, 907 "column": 86 908 } 909 } 910 }, 911 "body": { 912 "type": "BlockStatement", 913 "statements": [ 914 { 915 "type": "ReturnStatement", 916 "argument": { 917 "type": "BooleanLiteral", 918 "value": true, 919 "loc": { 920 "start": { 921 "line": 24, 922 "column": 12 923 }, 924 "end": { 925 "line": 24, 926 "column": 16 927 } 928 } 929 }, 930 "loc": { 931 "start": { 932 "line": 24, 933 "column": 5 934 }, 935 "end": { 936 "line": 24, 937 "column": 17 938 } 939 } 940 } 941 ], 942 "loc": { 943 "start": { 944 "line": 23, 945 "column": 122 946 }, 947 "end": { 948 "line": 25, 949 "column": 2 950 } 951 } 952 }, 953 "loc": { 954 "start": { 955 "line": 23, 956 "column": 1 957 }, 958 "end": { 959 "line": 25, 960 "column": 2 961 } 962 } 963 }, 964 "loc": { 965 "start": { 966 "line": 23, 967 "column": 1 968 }, 969 "end": { 970 "line": 25, 971 "column": 2 972 } 973 } 974 }, 975 { 976 "type": "TSTypeAliasDeclaration", 977 "id": { 978 "type": "Identifier", 979 "name": "PromiseConstructorLike", 980 "loc": { 981 "start": { 982 "line": 27, 983 "column": 14 984 }, 985 "end": { 986 "line": 27, 987 "column": 36 988 } 989 } 990 }, 991 "typeAnnotation": { 992 "type": "TSConstructorType", 993 "params": [ 994 { 995 "type": "Identifier", 996 "name": "executor", 997 "typeAnnotation": { 998 "type": "TSFunctionType", 999 "params": [ 1000 { 1001 "type": "Identifier", 1002 "name": "resolve", 1003 "typeAnnotation": { 1004 "type": "TSFunctionType", 1005 "params": [ 1006 { 1007 "type": "Identifier", 1008 "name": "value", 1009 "typeAnnotation": { 1010 "type": "TSUnionType", 1011 "types": [ 1012 { 1013 "type": "TSTypeReference", 1014 "typeName": { 1015 "type": "Identifier", 1016 "name": "T", 1017 "loc": { 1018 "start": { 1019 "line": 27, 1020 "column": 75 1021 }, 1022 "end": { 1023 "line": 27, 1024 "column": 76 1025 } 1026 } 1027 }, 1028 "loc": { 1029 "start": { 1030 "line": 27, 1031 "column": 75 1032 }, 1033 "end": { 1034 "line": 27, 1035 "column": 76 1036 } 1037 } 1038 }, 1039 { 1040 "type": "TSTypeReference", 1041 "typeName": { 1042 "type": "Identifier", 1043 "name": "PromiseLike", 1044 "loc": { 1045 "start": { 1046 "line": 27, 1047 "column": 79 1048 }, 1049 "end": { 1050 "line": 27, 1051 "column": 90 1052 } 1053 } 1054 }, 1055 "typeParameters": { 1056 "type": "TSTypeParameterInstantiation", 1057 "params": [ 1058 { 1059 "type": "TSTypeReference", 1060 "typeName": { 1061 "type": "Identifier", 1062 "name": "T", 1063 "loc": { 1064 "start": { 1065 "line": 27, 1066 "column": 91 1067 }, 1068 "end": { 1069 "line": 27, 1070 "column": 92 1071 } 1072 } 1073 }, 1074 "loc": { 1075 "start": { 1076 "line": 27, 1077 "column": 91 1078 }, 1079 "end": { 1080 "line": 27, 1081 "column": 92 1082 } 1083 } 1084 } 1085 ], 1086 "loc": { 1087 "start": { 1088 "line": 27, 1089 "column": 90 1090 }, 1091 "end": { 1092 "line": 27, 1093 "column": 93 1094 } 1095 } 1096 }, 1097 "loc": { 1098 "start": { 1099 "line": 27, 1100 "column": 79 1101 }, 1102 "end": { 1103 "line": 27, 1104 "column": 90 1105 } 1106 } 1107 } 1108 ], 1109 "loc": { 1110 "start": { 1111 "line": 27, 1112 "column": 75 1113 }, 1114 "end": { 1115 "line": 27, 1116 "column": 90 1117 } 1118 } 1119 }, 1120 "loc": { 1121 "start": { 1122 "line": 27, 1123 "column": 68 1124 }, 1125 "end": { 1126 "line": 27, 1127 "column": 73 1128 } 1129 } 1130 } 1131 ], 1132 "returnType": { 1133 "type": "TSVoidKeyword", 1134 "loc": { 1135 "start": { 1136 "line": 27, 1137 "column": 98 1138 }, 1139 "end": { 1140 "line": 27, 1141 "column": 102 1142 } 1143 } 1144 }, 1145 "loc": { 1146 "start": { 1147 "line": 27, 1148 "column": 67 1149 }, 1150 "end": { 1151 "line": 27, 1152 "column": 102 1153 } 1154 } 1155 }, 1156 "loc": { 1157 "start": { 1158 "line": 27, 1159 "column": 58 1160 }, 1161 "end": { 1162 "line": 27, 1163 "column": 65 1164 } 1165 } 1166 }, 1167 { 1168 "type": "Identifier", 1169 "name": "reject", 1170 "typeAnnotation": { 1171 "type": "TSFunctionType", 1172 "params": [ 1173 { 1174 "type": "Identifier", 1175 "name": "reason", 1176 "typeAnnotation": { 1177 "type": "TSAnyKeyword", 1178 "loc": { 1179 "start": { 1180 "line": 27, 1181 "column": 122 1182 }, 1183 "end": { 1184 "line": 27, 1185 "column": 125 1186 } 1187 } 1188 }, 1189 "optional": true, 1190 "loc": { 1191 "start": { 1192 "line": 27, 1193 "column": 113 1194 }, 1195 "end": { 1196 "line": 27, 1197 "column": 119 1198 } 1199 } 1200 } 1201 ], 1202 "returnType": { 1203 "type": "TSVoidKeyword", 1204 "loc": { 1205 "start": { 1206 "line": 27, 1207 "column": 130 1208 }, 1209 "end": { 1210 "line": 27, 1211 "column": 134 1212 } 1213 } 1214 }, 1215 "loc": { 1216 "start": { 1217 "line": 27, 1218 "column": 112 1219 }, 1220 "end": { 1221 "line": 27, 1222 "column": 134 1223 } 1224 } 1225 }, 1226 "loc": { 1227 "start": { 1228 "line": 27, 1229 "column": 104 1230 }, 1231 "end": { 1232 "line": 27, 1233 "column": 110 1234 } 1235 } 1236 } 1237 ], 1238 "returnType": { 1239 "type": "TSVoidKeyword", 1240 "loc": { 1241 "start": { 1242 "line": 27, 1243 "column": 139 1244 }, 1245 "end": { 1246 "line": 27, 1247 "column": 143 1248 } 1249 } 1250 }, 1251 "loc": { 1252 "start": { 1253 "line": 27, 1254 "column": 57 1255 }, 1256 "end": { 1257 "line": 27, 1258 "column": 143 1259 } 1260 } 1261 }, 1262 "loc": { 1263 "start": { 1264 "line": 27, 1265 "column": 47 1266 }, 1267 "end": { 1268 "line": 27, 1269 "column": 55 1270 } 1271 } 1272 } 1273 ], 1274 "typeParameters": { 1275 "type": "TSTypeParameterDeclaration", 1276 "params": [ 1277 { 1278 "type": "TSTypeParameter", 1279 "name": { 1280 "type": "Identifier", 1281 "name": "T", 1282 "loc": { 1283 "start": { 1284 "line": 27, 1285 "column": 44 1286 }, 1287 "end": { 1288 "line": 27, 1289 "column": 45 1290 } 1291 } 1292 }, 1293 "in": false, 1294 "out": false, 1295 "loc": { 1296 "start": { 1297 "line": 27, 1298 "column": 44 1299 }, 1300 "end": { 1301 "line": 27, 1302 "column": 46 1303 } 1304 } 1305 } 1306 ], 1307 "loc": { 1308 "start": { 1309 "line": 27, 1310 "column": 43 1311 }, 1312 "end": { 1313 "line": 27, 1314 "column": 46 1315 } 1316 } 1317 }, 1318 "returnType": { 1319 "type": "TSTypeReference", 1320 "typeName": { 1321 "type": "Identifier", 1322 "name": "PromiseLike", 1323 "loc": { 1324 "start": { 1325 "line": 27, 1326 "column": 148 1327 }, 1328 "end": { 1329 "line": 27, 1330 "column": 159 1331 } 1332 } 1333 }, 1334 "typeParameters": { 1335 "type": "TSTypeParameterInstantiation", 1336 "params": [ 1337 { 1338 "type": "TSTypeReference", 1339 "typeName": { 1340 "type": "Identifier", 1341 "name": "T", 1342 "loc": { 1343 "start": { 1344 "line": 27, 1345 "column": 160 1346 }, 1347 "end": { 1348 "line": 27, 1349 "column": 161 1350 } 1351 } 1352 }, 1353 "loc": { 1354 "start": { 1355 "line": 27, 1356 "column": 160 1357 }, 1358 "end": { 1359 "line": 27, 1360 "column": 161 1361 } 1362 } 1363 } 1364 ], 1365 "loc": { 1366 "start": { 1367 "line": 27, 1368 "column": 159 1369 }, 1370 "end": { 1371 "line": 27, 1372 "column": 162 1373 } 1374 } 1375 }, 1376 "loc": { 1377 "start": { 1378 "line": 27, 1379 "column": 148 1380 }, 1381 "end": { 1382 "line": 27, 1383 "column": 159 1384 } 1385 } 1386 }, 1387 "loc": { 1388 "start": { 1389 "line": 27, 1390 "column": 39 1391 }, 1392 "end": { 1393 "line": 27, 1394 "column": 159 1395 } 1396 } 1397 }, 1398 "declare": true, 1399 "loc": { 1400 "start": { 1401 "line": 27, 1402 "column": 9 1403 }, 1404 "end": { 1405 "line": 27, 1406 "column": 163 1407 } 1408 } 1409 }, 1410 { 1411 "type": "TSInterfaceDeclaration", 1412 "body": { 1413 "type": "TSInterfaceBody", 1414 "body": [ 1415 { 1416 "type": "TSPropertySignature", 1417 "computed": false, 1418 "optional": false, 1419 "readonly": false, 1420 "key": { 1421 "type": "Identifier", 1422 "name": "a", 1423 "loc": { 1424 "start": { 1425 "line": 30, 1426 "column": 5 1427 }, 1428 "end": { 1429 "line": 30, 1430 "column": 6 1431 } 1432 } 1433 }, 1434 "typeAnnotation": { 1435 "type": "TSNumberKeyword", 1436 "loc": { 1437 "start": { 1438 "line": 30, 1439 "column": 8 1440 }, 1441 "end": { 1442 "line": 30, 1443 "column": 14 1444 } 1445 } 1446 }, 1447 "loc": { 1448 "start": { 1449 "line": 30, 1450 "column": 5 1451 }, 1452 "end": { 1453 "line": 30, 1454 "column": 15 1455 } 1456 } 1457 }, 1458 { 1459 "type": "TSIndexSignature", 1460 "parameters": { 1461 "type": "Identifier", 1462 "name": "x", 1463 "typeAnnotation": { 1464 "type": "TSStringKeyword", 1465 "loc": { 1466 "start": { 1467 "line": 31, 1468 "column": 9 1469 }, 1470 "end": { 1471 "line": 31, 1472 "column": 15 1473 } 1474 } 1475 }, 1476 "loc": { 1477 "start": { 1478 "line": 31, 1479 "column": 6 1480 }, 1481 "end": { 1482 "line": 31, 1483 "column": 7 1484 } 1485 } 1486 }, 1487 "typeAnnotation": { 1488 "type": "TSUnionType", 1489 "types": [ 1490 { 1491 "type": "TSBooleanKeyword", 1492 "loc": { 1493 "start": { 1494 "line": 31, 1495 "column": 18 1496 }, 1497 "end": { 1498 "line": 31, 1499 "column": 25 1500 } 1501 } 1502 }, 1503 { 1504 "type": "TSNumberKeyword", 1505 "loc": { 1506 "start": { 1507 "line": 31, 1508 "column": 28 1509 }, 1510 "end": { 1511 "line": 31, 1512 "column": 34 1513 } 1514 } 1515 } 1516 ], 1517 "loc": { 1518 "start": { 1519 "line": 31, 1520 "column": 18 1521 }, 1522 "end": { 1523 "line": 31, 1524 "column": 34 1525 } 1526 } 1527 }, 1528 "readonly": false, 1529 "static": false, 1530 "loc": { 1531 "start": { 1532 "line": 31, 1533 "column": 5 1534 }, 1535 "end": { 1536 "line": 31, 1537 "column": 35 1538 } 1539 } 1540 } 1541 ], 1542 "loc": { 1543 "start": { 1544 "line": 29, 1545 "column": 53 1546 }, 1547 "end": { 1548 "line": 32, 1549 "column": 2 1550 } 1551 } 1552 }, 1553 "id": { 1554 "type": "Identifier", 1555 "name": "R", 1556 "loc": { 1557 "start": { 1558 "line": 29, 1559 "column": 11 1560 }, 1561 "end": { 1562 "line": 29, 1563 "column": 12 1564 } 1565 } 1566 }, 1567 "extends": [], 1568 "typeParameters": { 1569 "type": "TSTypeParameterDeclaration", 1570 "params": [ 1571 { 1572 "type": "TSTypeParameter", 1573 "name": { 1574 "type": "Identifier", 1575 "name": "K", 1576 "loc": { 1577 "start": { 1578 "line": 29, 1579 "column": 13 1580 }, 1581 "end": { 1582 "line": 29, 1583 "column": 14 1584 } 1585 } 1586 }, 1587 "constraint": { 1588 "type": "TSTupleType", 1589 "elementTypes": [ 1590 { 1591 "type": "TSNumberKeyword", 1592 "loc": { 1593 "start": { 1594 "line": 29, 1595 "column": 24 1596 }, 1597 "end": { 1598 "line": 29, 1599 "column": 30 1600 } 1601 } 1602 }, 1603 { 1604 "type": "TSStringKeyword", 1605 "loc": { 1606 "start": { 1607 "line": 29, 1608 "column": 32 1609 }, 1610 "end": { 1611 "line": 29, 1612 "column": 38 1613 } 1614 } 1615 } 1616 ], 1617 "loc": { 1618 "start": { 1619 "line": 29, 1620 "column": 23 1621 }, 1622 "end": { 1623 "line": 29, 1624 "column": 39 1625 } 1626 } 1627 }, 1628 "in": false, 1629 "out": false, 1630 "loc": { 1631 "start": { 1632 "line": 29, 1633 "column": 13 1634 }, 1635 "end": { 1636 "line": 29, 1637 "column": 40 1638 } 1639 } 1640 }, 1641 { 1642 "type": "TSTypeParameter", 1643 "name": { 1644 "type": "Identifier", 1645 "name": "T", 1646 "loc": { 1647 "start": { 1648 "line": 29, 1649 "column": 41 1650 }, 1651 "end": { 1652 "line": 29, 1653 "column": 42 1654 } 1655 } 1656 }, 1657 "default": { 1658 "type": "TSStringKeyword", 1659 "loc": { 1660 "start": { 1661 "line": 29, 1662 "column": 45 1663 }, 1664 "end": { 1665 "line": 29, 1666 "column": 51 1667 } 1668 } 1669 }, 1670 "in": false, 1671 "out": false, 1672 "loc": { 1673 "start": { 1674 "line": 29, 1675 "column": 41 1676 }, 1677 "end": { 1678 "line": 29, 1679 "column": 52 1680 } 1681 } 1682 } 1683 ], 1684 "loc": { 1685 "start": { 1686 "line": 29, 1687 "column": 12 1688 }, 1689 "end": { 1690 "line": 29, 1691 "column": 52 1692 } 1693 } 1694 }, 1695 "loc": { 1696 "start": { 1697 "line": 29, 1698 "column": 1 1699 }, 1700 "end": { 1701 "line": 32, 1702 "column": 2 1703 } 1704 } 1705 }, 1706 { 1707 "type": "TSInterfaceDeclaration", 1708 "body": { 1709 "type": "TSInterfaceBody", 1710 "body": [ 1711 { 1712 "type": "TSCallSignatureDeclaration", 1713 "params": [], 1714 "typeParameters": { 1715 "type": "TSTypeParameterDeclaration", 1716 "params": [ 1717 { 1718 "type": "TSTypeParameter", 1719 "name": { 1720 "type": "Identifier", 1721 "name": "A", 1722 "loc": { 1723 "start": { 1724 "line": 35, 1725 "column": 6 1726 }, 1727 "end": { 1728 "line": 35, 1729 "column": 7 1730 } 1731 } 1732 }, 1733 "in": false, 1734 "out": false, 1735 "loc": { 1736 "start": { 1737 "line": 35, 1738 "column": 6 1739 }, 1740 "end": { 1741 "line": 35, 1742 "column": 8 1743 } 1744 } 1745 } 1746 ], 1747 "loc": { 1748 "start": { 1749 "line": 35, 1750 "column": 5 1751 }, 1752 "end": { 1753 "line": 35, 1754 "column": 8 1755 } 1756 } 1757 }, 1758 "returnType": { 1759 "type": "TSNumberKeyword", 1760 "loc": { 1761 "start": { 1762 "line": 35, 1763 "column": 12 1764 }, 1765 "end": { 1766 "line": 35, 1767 "column": 18 1768 } 1769 } 1770 }, 1771 "loc": { 1772 "start": { 1773 "line": 35, 1774 "column": 5 1775 }, 1776 "end": { 1777 "line": 35, 1778 "column": 19 1779 } 1780 } 1781 }, 1782 { 1783 "type": "TSMethodSignature", 1784 "computed": false, 1785 "optional": false, 1786 "isGetAccessor": false, 1787 "isSetAccessor": false, 1788 "key": { 1789 "type": "Identifier", 1790 "name": "readonly", 1791 "loc": { 1792 "start": { 1793 "line": 36, 1794 "column": 5 1795 }, 1796 "end": { 1797 "line": 36, 1798 "column": 13 1799 } 1800 } 1801 }, 1802 "params": [], 1803 "typeParameters": { 1804 "type": "TSTypeParameterDeclaration", 1805 "params": [ 1806 { 1807 "type": "TSTypeParameter", 1808 "name": { 1809 "type": "Identifier", 1810 "name": "A", 1811 "loc": { 1812 "start": { 1813 "line": 36, 1814 "column": 14 1815 }, 1816 "end": { 1817 "line": 36, 1818 "column": 15 1819 } 1820 } 1821 }, 1822 "constraint": { 1823 "type": "TSNumberKeyword", 1824 "loc": { 1825 "start": { 1826 "line": 36, 1827 "column": 24 1828 }, 1829 "end": { 1830 "line": 36, 1831 "column": 30 1832 } 1833 } 1834 }, 1835 "in": false, 1836 "out": false, 1837 "loc": { 1838 "start": { 1839 "line": 36, 1840 "column": 14 1841 }, 1842 "end": { 1843 "line": 36, 1844 "column": 31 1845 } 1846 } 1847 } 1848 ], 1849 "loc": { 1850 "start": { 1851 "line": 36, 1852 "column": 13 1853 }, 1854 "end": { 1855 "line": 36, 1856 "column": 31 1857 } 1858 } 1859 }, 1860 "typeAnnotation": { 1861 "type": "TSTupleType", 1862 "elementTypes": [ 1863 { 1864 "type": "TSBooleanKeyword", 1865 "loc": { 1866 "start": { 1867 "line": 36, 1868 "column": 36 1869 }, 1870 "end": { 1871 "line": 36, 1872 "column": 43 1873 } 1874 } 1875 }, 1876 { 1877 "type": "TSArrayType", 1878 "elementType": { 1879 "type": "TSNumberKeyword", 1880 "loc": { 1881 "start": { 1882 "line": 36, 1883 "column": 45 1884 }, 1885 "end": { 1886 "line": 36, 1887 "column": 51 1888 } 1889 } 1890 }, 1891 "loc": { 1892 "start": { 1893 "line": 36, 1894 "column": 45 1895 }, 1896 "end": { 1897 "line": 36, 1898 "column": 53 1899 } 1900 } 1901 } 1902 ], 1903 "loc": { 1904 "start": { 1905 "line": 36, 1906 "column": 35 1907 }, 1908 "end": { 1909 "line": 36, 1910 "column": 54 1911 } 1912 } 1913 }, 1914 "loc": { 1915 "start": { 1916 "line": 36, 1917 "column": 5 1918 }, 1919 "end": { 1920 "line": 36, 1921 "column": 55 1922 } 1923 } 1924 } 1925 ], 1926 "loc": { 1927 "start": { 1928 "line": 34, 1929 "column": 117 1930 }, 1931 "end": { 1932 "line": 37, 1933 "column": 2 1934 } 1935 } 1936 }, 1937 "id": { 1938 "type": "Identifier", 1939 "name": "U", 1940 "loc": { 1941 "start": { 1942 "line": 34, 1943 "column": 11 1944 }, 1945 "end": { 1946 "line": 34, 1947 "column": 12 1948 } 1949 } 1950 }, 1951 "extends": [ 1952 { 1953 "type": "TSInterfaceHeritage", 1954 "expression": { 1955 "type": "TSTypeReference", 1956 "typeName": { 1957 "type": "Identifier", 1958 "name": "R", 1959 "loc": { 1960 "start": { 1961 "line": 34, 1962 "column": 97 1963 }, 1964 "end": { 1965 "line": 34, 1966 "column": 98 1967 } 1968 } 1969 }, 1970 "typeParameters": { 1971 "type": "TSTypeParameterInstantiation", 1972 "params": [ 1973 { 1974 "type": "TSTupleType", 1975 "elementTypes": [ 1976 { 1977 "type": "TSNumberKeyword", 1978 "loc": { 1979 "start": { 1980 "line": 34, 1981 "column": 100 1982 }, 1983 "end": { 1984 "line": 34, 1985 "column": 106 1986 } 1987 } 1988 }, 1989 { 1990 "type": "TSStringKeyword", 1991 "loc": { 1992 "start": { 1993 "line": 34, 1994 "column": 108 1995 }, 1996 "end": { 1997 "line": 34, 1998 "column": 114 1999 } 2000 } 2001 } 2002 ], 2003 "loc": { 2004 "start": { 2005 "line": 34, 2006 "column": 99 2007 }, 2008 "end": { 2009 "line": 34, 2010 "column": 115 2011 } 2012 } 2013 } 2014 ], 2015 "loc": { 2016 "start": { 2017 "line": 34, 2018 "column": 98 2019 }, 2020 "end": { 2021 "line": 34, 2022 "column": 116 2023 } 2024 } 2025 }, 2026 "loc": { 2027 "start": { 2028 "line": 34, 2029 "column": 117 2030 }, 2031 "end": { 2032 "line": 34, 2033 "column": 116 2034 } 2035 } 2036 }, 2037 "loc": { 2038 "start": { 2039 "line": 34, 2040 "column": 117 2041 }, 2042 "end": { 2043 "line": 34, 2044 "column": 116 2045 } 2046 } 2047 } 2048 ], 2049 "typeParameters": { 2050 "type": "TSTypeParameterDeclaration", 2051 "params": [ 2052 { 2053 "type": "TSTypeParameter", 2054 "name": { 2055 "type": "Identifier", 2056 "name": "A", 2057 "loc": { 2058 "start": { 2059 "line": 34, 2060 "column": 13 2061 }, 2062 "end": { 2063 "line": 34, 2064 "column": 14 2065 } 2066 } 2067 }, 2068 "constraint": { 2069 "type": "TSTypeOperator", 2070 "operator": "readonly", 2071 "typeAnnotation": { 2072 "type": "TSTupleType", 2073 "elementTypes": [ 2074 { 2075 "type": "TSNumberKeyword", 2076 "loc": { 2077 "start": { 2078 "line": 34, 2079 "column": 33 2080 }, 2081 "end": { 2082 "line": 34, 2083 "column": 39 2084 } 2085 } 2086 }, 2087 { 2088 "type": "TSNumberKeyword", 2089 "loc": { 2090 "start": { 2091 "line": 34, 2092 "column": 41 2093 }, 2094 "end": { 2095 "line": 34, 2096 "column": 47 2097 } 2098 } 2099 }, 2100 { 2101 "type": "TSTypeLiteral", 2102 "members": [ 2103 { 2104 "type": "TSPropertySignature", 2105 "computed": false, 2106 "optional": false, 2107 "readonly": false, 2108 "key": { 2109 "type": "Identifier", 2110 "name": "a", 2111 "loc": { 2112 "start": { 2113 "line": 34, 2114 "column": 51 2115 }, 2116 "end": { 2117 "line": 34, 2118 "column": 52 2119 } 2120 } 2121 }, 2122 "typeAnnotation": { 2123 "type": "TSNumberKeyword", 2124 "loc": { 2125 "start": { 2126 "line": 34, 2127 "column": 54 2128 }, 2129 "end": { 2130 "line": 34, 2131 "column": 60 2132 } 2133 } 2134 }, 2135 "loc": { 2136 "start": { 2137 "line": 34, 2138 "column": 51 2139 }, 2140 "end": { 2141 "line": 34, 2142 "column": 61 2143 } 2144 } 2145 }, 2146 { 2147 "type": "TSPropertySignature", 2148 "computed": false, 2149 "optional": false, 2150 "readonly": false, 2151 "key": { 2152 "type": "Identifier", 2153 "name": "b", 2154 "loc": { 2155 "start": { 2156 "line": 34, 2157 "column": 62 2158 }, 2159 "end": { 2160 "line": 34, 2161 "column": 63 2162 } 2163 } 2164 }, 2165 "typeAnnotation": { 2166 "type": "TSStringKeyword", 2167 "loc": { 2168 "start": { 2169 "line": 34, 2170 "column": 65 2171 }, 2172 "end": { 2173 "line": 34, 2174 "column": 71 2175 } 2176 } 2177 }, 2178 "loc": { 2179 "start": { 2180 "line": 34, 2181 "column": 62 2182 }, 2183 "end": { 2184 "line": 34, 2185 "column": 73 2186 } 2187 } 2188 } 2189 ], 2190 "loc": { 2191 "start": { 2192 "line": 34, 2193 "column": 49 2194 }, 2195 "end": { 2196 "line": 34, 2197 "column": 73 2198 } 2199 } 2200 } 2201 ], 2202 "loc": { 2203 "start": { 2204 "line": 34, 2205 "column": 32 2206 }, 2207 "end": { 2208 "line": 34, 2209 "column": 74 2210 } 2211 } 2212 }, 2213 "loc": { 2214 "start": { 2215 "line": 34, 2216 "column": 23 2217 }, 2218 "end": { 2219 "line": 34, 2220 "column": 74 2221 } 2222 } 2223 }, 2224 "in": false, 2225 "out": false, 2226 "loc": { 2227 "start": { 2228 "line": 34, 2229 "column": 13 2230 }, 2231 "end": { 2232 "line": 34, 2233 "column": 75 2234 } 2235 } 2236 }, 2237 { 2238 "type": "TSTypeParameter", 2239 "name": { 2240 "type": "Identifier", 2241 "name": "Z", 2242 "loc": { 2243 "start": { 2244 "line": 34, 2245 "column": 76 2246 }, 2247 "end": { 2248 "line": 34, 2249 "column": 77 2250 } 2251 } 2252 }, 2253 "default": { 2254 "type": "TSBooleanKeyword", 2255 "loc": { 2256 "start": { 2257 "line": 34, 2258 "column": 80 2259 }, 2260 "end": { 2261 "line": 34, 2262 "column": 87 2263 } 2264 } 2265 }, 2266 "in": false, 2267 "out": false, 2268 "loc": { 2269 "start": { 2270 "line": 34, 2271 "column": 76 2272 }, 2273 "end": { 2274 "line": 34, 2275 "column": 88 2276 } 2277 } 2278 } 2279 ], 2280 "loc": { 2281 "start": { 2282 "line": 34, 2283 "column": 12 2284 }, 2285 "end": { 2286 "line": 34, 2287 "column": 88 2288 } 2289 } 2290 }, 2291 "loc": { 2292 "start": { 2293 "line": 34, 2294 "column": 1 2295 }, 2296 "end": { 2297 "line": 37, 2298 "column": 2 2299 } 2300 } 2301 }, 2302 { 2303 "type": "ExpressionStatement", 2304 "expression": { 2305 "type": "CallExpression", 2306 "callee": { 2307 "type": "Identifier", 2308 "name": "func1", 2309 "loc": { 2310 "start": { 2311 "line": 39, 2312 "column": 1 2313 }, 2314 "end": { 2315 "line": 39, 2316 "column": 6 2317 } 2318 } 2319 }, 2320 "arguments": [], 2321 "optional": false, 2322 "typeParameters": { 2323 "type": "TSTypeParameterInstantiation", 2324 "params": [ 2325 { 2326 "type": "TSNumberKeyword", 2327 "loc": { 2328 "start": { 2329 "line": 39, 2330 "column": 7 2331 }, 2332 "end": { 2333 "line": 39, 2334 "column": 13 2335 } 2336 } 2337 }, 2338 { 2339 "type": "TSStringKeyword", 2340 "loc": { 2341 "start": { 2342 "line": 39, 2343 "column": 15 2344 }, 2345 "end": { 2346 "line": 39, 2347 "column": 21 2348 } 2349 } 2350 }, 2351 { 2352 "type": "TSTupleType", 2353 "elementTypes": [ 2354 { 2355 "type": "TSLiteralType", 2356 "literal": { 2357 "type": "NumberLiteral", 2358 "value": 1, 2359 "loc": { 2360 "start": { 2361 "line": 39, 2362 "column": 24 2363 }, 2364 "end": { 2365 "line": 39, 2366 "column": 25 2367 } 2368 } 2369 }, 2370 "loc": { 2371 "start": { 2372 "line": 39, 2373 "column": 24 2374 }, 2375 "end": { 2376 "line": 39, 2377 "column": 25 2378 } 2379 } 2380 }, 2381 { 2382 "type": "TSLiteralType", 2383 "literal": { 2384 "type": "NumberLiteral", 2385 "value": 2, 2386 "loc": { 2387 "start": { 2388 "line": 39, 2389 "column": 27 2390 }, 2391 "end": { 2392 "line": 39, 2393 "column": 28 2394 } 2395 } 2396 }, 2397 "loc": { 2398 "start": { 2399 "line": 39, 2400 "column": 27 2401 }, 2402 "end": { 2403 "line": 39, 2404 "column": 28 2405 } 2406 } 2407 }, 2408 { 2409 "type": "TSLiteralType", 2410 "literal": { 2411 "type": "NumberLiteral", 2412 "value": 3, 2413 "loc": { 2414 "start": { 2415 "line": 39, 2416 "column": 30 2417 }, 2418 "end": { 2419 "line": 39, 2420 "column": 31 2421 } 2422 } 2423 }, 2424 "loc": { 2425 "start": { 2426 "line": 39, 2427 "column": 30 2428 }, 2429 "end": { 2430 "line": 39, 2431 "column": 31 2432 } 2433 } 2434 } 2435 ], 2436 "loc": { 2437 "start": { 2438 "line": 39, 2439 "column": 23 2440 }, 2441 "end": { 2442 "line": 39, 2443 "column": 32 2444 } 2445 } 2446 } 2447 ], 2448 "loc": { 2449 "start": { 2450 "line": 39, 2451 "column": 6 2452 }, 2453 "end": { 2454 "line": 39, 2455 "column": 33 2456 } 2457 } 2458 }, 2459 "loc": { 2460 "start": { 2461 "line": 39, 2462 "column": 1 2463 }, 2464 "end": { 2465 "line": 39, 2466 "column": 35 2467 } 2468 } 2469 }, 2470 "loc": { 2471 "start": { 2472 "line": 39, 2473 "column": 1 2474 }, 2475 "end": { 2476 "line": 39, 2477 "column": 35 2478 } 2479 } 2480 }, 2481 { 2482 "type": "ExpressionStatement", 2483 "expression": { 2484 "type": "CallExpression", 2485 "callee": { 2486 "type": "Identifier", 2487 "name": "func2", 2488 "loc": { 2489 "start": { 2490 "line": 40, 2491 "column": 1 2492 }, 2493 "end": { 2494 "line": 40, 2495 "column": 6 2496 } 2497 } 2498 }, 2499 "arguments": [], 2500 "optional": false, 2501 "typeParameters": { 2502 "type": "TSTypeParameterInstantiation", 2503 "params": [ 2504 { 2505 "type": "TSFunctionType", 2506 "params": [], 2507 "typeParameters": { 2508 "type": "TSTypeParameterDeclaration", 2509 "params": [ 2510 { 2511 "type": "TSTypeParameter", 2512 "name": { 2513 "type": "Identifier", 2514 "name": "A", 2515 "loc": { 2516 "start": { 2517 "line": 40, 2518 "column": 8 2519 }, 2520 "end": { 2521 "line": 40, 2522 "column": 9 2523 } 2524 } 2525 }, 2526 "in": false, 2527 "out": false, 2528 "loc": { 2529 "start": { 2530 "line": 40, 2531 "column": 8 2532 }, 2533 "end": { 2534 "line": 40, 2535 "column": 10 2536 } 2537 } 2538 } 2539 ], 2540 "loc": { 2541 "start": { 2542 "line": 40, 2543 "column": 7 2544 }, 2545 "end": { 2546 "line": 40, 2547 "column": 10 2548 } 2549 } 2550 }, 2551 "returnType": { 2552 "type": "TSTypeLiteral", 2553 "members": [], 2554 "loc": { 2555 "start": { 2556 "line": 40, 2557 "column": 16 2558 }, 2559 "end": { 2560 "line": 40, 2561 "column": 18 2562 } 2563 } 2564 }, 2565 "loc": { 2566 "start": { 2567 "line": 40, 2568 "column": 7 2569 }, 2570 "end": { 2571 "line": 40, 2572 "column": 18 2573 } 2574 } 2575 } 2576 ], 2577 "loc": { 2578 "start": { 2579 "line": 40, 2580 "column": 6 2581 }, 2582 "end": { 2583 "line": 40, 2584 "column": 19 2585 } 2586 } 2587 }, 2588 "loc": { 2589 "start": { 2590 "line": 40, 2591 "column": 1 2592 }, 2593 "end": { 2594 "line": 40, 2595 "column": 21 2596 } 2597 } 2598 }, 2599 "loc": { 2600 "start": { 2601 "line": 40, 2602 "column": 1 2603 }, 2604 "end": { 2605 "line": 40, 2606 "column": 22 2607 } 2608 } 2609 }, 2610 { 2611 "type": "VariableDeclaration", 2612 "declarations": [ 2613 { 2614 "type": "VariableDeclarator", 2615 "id": { 2616 "type": "Identifier", 2617 "name": "o", 2618 "loc": { 2619 "start": { 2620 "line": 42, 2621 "column": 5 2622 }, 2623 "end": { 2624 "line": 42, 2625 "column": 6 2626 } 2627 } 2628 }, 2629 "init": { 2630 "type": "ObjectExpression", 2631 "properties": [ 2632 { 2633 "type": "Property", 2634 "method": false, 2635 "shorthand": false, 2636 "computed": false, 2637 "key": { 2638 "type": "Identifier", 2639 "name": "a", 2640 "loc": { 2641 "start": { 2642 "line": 43, 2643 "column": 5 2644 }, 2645 "end": { 2646 "line": 43, 2647 "column": 6 2648 } 2649 } 2650 }, 2651 "value": { 2652 "type": "FunctionExpression", 2653 "function": { 2654 "type": "ScriptFunction", 2655 "id": null, 2656 "generator": false, 2657 "async": false, 2658 "expression": false, 2659 "params": [], 2660 "typeParameters": { 2661 "type": "TSTypeParameterDeclaration", 2662 "params": [ 2663 { 2664 "type": "TSTypeParameter", 2665 "name": { 2666 "type": "Identifier", 2667 "name": "B", 2668 "loc": { 2669 "start": { 2670 "line": 43, 2671 "column": 18 2672 }, 2673 "end": { 2674 "line": 43, 2675 "column": 19 2676 } 2677 } 2678 }, 2679 "in": false, 2680 "out": false, 2681 "loc": { 2682 "start": { 2683 "line": 43, 2684 "column": 18 2685 }, 2686 "end": { 2687 "line": 43, 2688 "column": 20 2689 } 2690 } 2691 }, 2692 { 2693 "type": "TSTypeParameter", 2694 "name": { 2695 "type": "Identifier", 2696 "name": "C", 2697 "loc": { 2698 "start": { 2699 "line": 43, 2700 "column": 21 2701 }, 2702 "end": { 2703 "line": 43, 2704 "column": 22 2705 } 2706 } 2707 }, 2708 "constraint": { 2709 "type": "TSTypeQuery", 2710 "exprName": { 2711 "type": "Identifier", 2712 "name": "func1", 2713 "loc": { 2714 "start": { 2715 "line": 43, 2716 "column": 38 2717 }, 2718 "end": { 2719 "line": 43, 2720 "column": 43 2721 } 2722 } 2723 }, 2724 "loc": { 2725 "start": { 2726 "line": 43, 2727 "column": 31 2728 }, 2729 "end": { 2730 "line": 43, 2731 "column": 43 2732 } 2733 } 2734 }, 2735 "in": false, 2736 "out": false, 2737 "loc": { 2738 "start": { 2739 "line": 43, 2740 "column": 21 2741 }, 2742 "end": { 2743 "line": 43, 2744 "column": 44 2745 } 2746 } 2747 } 2748 ], 2749 "loc": { 2750 "start": { 2751 "line": 43, 2752 "column": 17 2753 }, 2754 "end": { 2755 "line": 43, 2756 "column": 44 2757 } 2758 } 2759 }, 2760 "body": { 2761 "type": "BlockStatement", 2762 "statements": [], 2763 "loc": { 2764 "start": { 2765 "line": 43, 2766 "column": 47 2767 }, 2768 "end": { 2769 "line": 43, 2770 "column": 50 2771 } 2772 } 2773 }, 2774 "loc": { 2775 "start": { 2776 "line": 43, 2777 "column": 8 2778 }, 2779 "end": { 2780 "line": 43, 2781 "column": 50 2782 } 2783 } 2784 }, 2785 "loc": { 2786 "start": { 2787 "line": 43, 2788 "column": 8 2789 }, 2790 "end": { 2791 "line": 43, 2792 "column": 50 2793 } 2794 } 2795 }, 2796 "kind": "init", 2797 "loc": { 2798 "start": { 2799 "line": 43, 2800 "column": 5 2801 }, 2802 "end": { 2803 "line": 43, 2804 "column": 50 2805 } 2806 } 2807 }, 2808 { 2809 "type": "Property", 2810 "method": false, 2811 "shorthand": false, 2812 "computed": false, 2813 "key": { 2814 "type": "Identifier", 2815 "name": "b", 2816 "loc": { 2817 "start": { 2818 "line": 44, 2819 "column": 5 2820 }, 2821 "end": { 2822 "line": 44, 2823 "column": 6 2824 } 2825 } 2826 }, 2827 "value": { 2828 "type": "FunctionExpression", 2829 "function": { 2830 "type": "ScriptFunction", 2831 "id": null, 2832 "generator": false, 2833 "async": false, 2834 "expression": false, 2835 "params": [], 2836 "typeParameters": { 2837 "type": "TSTypeParameterDeclaration", 2838 "params": [ 2839 { 2840 "type": "TSTypeParameter", 2841 "name": { 2842 "type": "Identifier", 2843 "name": "D", 2844 "loc": { 2845 "start": { 2846 "line": 44, 2847 "column": 18 2848 }, 2849 "end": { 2850 "line": 44, 2851 "column": 19 2852 } 2853 } 2854 }, 2855 "default": { 2856 "type": "TSNumberKeyword", 2857 "loc": { 2858 "start": { 2859 "line": 44, 2860 "column": 22 2861 }, 2862 "end": { 2863 "line": 44, 2864 "column": 28 2865 } 2866 } 2867 }, 2868 "in": false, 2869 "out": false, 2870 "loc": { 2871 "start": { 2872 "line": 44, 2873 "column": 18 2874 }, 2875 "end": { 2876 "line": 44, 2877 "column": 29 2878 } 2879 } 2880 }, 2881 { 2882 "type": "TSTypeParameter", 2883 "name": { 2884 "type": "Identifier", 2885 "name": "T", 2886 "loc": { 2887 "start": { 2888 "line": 44, 2889 "column": 30 2890 }, 2891 "end": { 2892 "line": 44, 2893 "column": 31 2894 } 2895 } 2896 }, 2897 "default": { 2898 "type": "TSStringKeyword", 2899 "loc": { 2900 "start": { 2901 "line": 44, 2902 "column": 34 2903 }, 2904 "end": { 2905 "line": 44, 2906 "column": 40 2907 } 2908 } 2909 }, 2910 "in": false, 2911 "out": false, 2912 "loc": { 2913 "start": { 2914 "line": 44, 2915 "column": 30 2916 }, 2917 "end": { 2918 "line": 44, 2919 "column": 41 2920 } 2921 } 2922 } 2923 ], 2924 "loc": { 2925 "start": { 2926 "line": 44, 2927 "column": 17 2928 }, 2929 "end": { 2930 "line": 44, 2931 "column": 41 2932 } 2933 } 2934 }, 2935 "body": { 2936 "type": "BlockStatement", 2937 "statements": [], 2938 "loc": { 2939 "start": { 2940 "line": 44, 2941 "column": 44 2942 }, 2943 "end": { 2944 "line": 44, 2945 "column": 47 2946 } 2947 } 2948 }, 2949 "loc": { 2950 "start": { 2951 "line": 44, 2952 "column": 8 2953 }, 2954 "end": { 2955 "line": 44, 2956 "column": 47 2957 } 2958 } 2959 }, 2960 "loc": { 2961 "start": { 2962 "line": 44, 2963 "column": 8 2964 }, 2965 "end": { 2966 "line": 44, 2967 "column": 47 2968 } 2969 } 2970 }, 2971 "kind": "init", 2972 "loc": { 2973 "start": { 2974 "line": 44, 2975 "column": 5 2976 }, 2977 "end": { 2978 "line": 44, 2979 "column": 47 2980 } 2981 } 2982 }, 2983 { 2984 "type": "Property", 2985 "method": true, 2986 "shorthand": false, 2987 "computed": false, 2988 "key": { 2989 "type": "Identifier", 2990 "name": "c", 2991 "loc": { 2992 "start": { 2993 "line": 45, 2994 "column": 5 2995 }, 2996 "end": { 2997 "line": 45, 2998 "column": 6 2999 } 3000 } 3001 }, 3002 "value": { 3003 "type": "FunctionExpression", 3004 "function": { 3005 "type": "ScriptFunction", 3006 "id": null, 3007 "generator": false, 3008 "async": false, 3009 "expression": false, 3010 "params": [], 3011 "typeParameters": { 3012 "type": "TSTypeParameterDeclaration", 3013 "params": [ 3014 { 3015 "type": "TSTypeParameter", 3016 "name": { 3017 "type": "Identifier", 3018 "name": "E", 3019 "loc": { 3020 "start": { 3021 "line": 45, 3022 "column": 7 3023 }, 3024 "end": { 3025 "line": 45, 3026 "column": 8 3027 } 3028 } 3029 }, 3030 "in": false, 3031 "out": false, 3032 "loc": { 3033 "start": { 3034 "line": 45, 3035 "column": 7 3036 }, 3037 "end": { 3038 "line": 45, 3039 "column": 9 3040 } 3041 } 3042 }, 3043 { 3044 "type": "TSTypeParameter", 3045 "name": { 3046 "type": "Identifier", 3047 "name": "F", 3048 "loc": { 3049 "start": { 3050 "line": 45, 3051 "column": 10 3052 }, 3053 "end": { 3054 "line": 45, 3055 "column": 11 3056 } 3057 } 3058 }, 3059 "constraint": { 3060 "type": "TSTypeOperator", 3061 "operator": "readonly", 3062 "typeAnnotation": { 3063 "type": "TSTupleType", 3064 "elementTypes": [], 3065 "loc": { 3066 "start": { 3067 "line": 45, 3068 "column": 29 3069 }, 3070 "end": { 3071 "line": 45, 3072 "column": 31 3073 } 3074 } 3075 }, 3076 "loc": { 3077 "start": { 3078 "line": 45, 3079 "column": 20 3080 }, 3081 "end": { 3082 "line": 45, 3083 "column": 31 3084 } 3085 } 3086 }, 3087 "in": false, 3088 "out": false, 3089 "loc": { 3090 "start": { 3091 "line": 45, 3092 "column": 10 3093 }, 3094 "end": { 3095 "line": 45, 3096 "column": 32 3097 } 3098 } 3099 } 3100 ], 3101 "loc": { 3102 "start": { 3103 "line": 45, 3104 "column": 6 3105 }, 3106 "end": { 3107 "line": 45, 3108 "column": 32 3109 } 3110 } 3111 }, 3112 "body": { 3113 "type": "BlockStatement", 3114 "statements": [], 3115 "loc": { 3116 "start": { 3117 "line": 45, 3118 "column": 35 3119 }, 3120 "end": { 3121 "line": 45, 3122 "column": 38 3123 } 3124 } 3125 }, 3126 "loc": { 3127 "start": { 3128 "line": 45, 3129 "column": 6 3130 }, 3131 "end": { 3132 "line": 45, 3133 "column": 38 3134 } 3135 } 3136 }, 3137 "loc": { 3138 "start": { 3139 "line": 45, 3140 "column": 6 3141 }, 3142 "end": { 3143 "line": 45, 3144 "column": 38 3145 } 3146 } 3147 }, 3148 "kind": "init", 3149 "loc": { 3150 "start": { 3151 "line": 45, 3152 "column": 5 3153 }, 3154 "end": { 3155 "line": 45, 3156 "column": 38 3157 } 3158 } 3159 } 3160 ], 3161 "loc": { 3162 "start": { 3163 "line": 42, 3164 "column": 9 3165 }, 3166 "end": { 3167 "line": 46, 3168 "column": 2 3169 } 3170 } 3171 }, 3172 "loc": { 3173 "start": { 3174 "line": 42, 3175 "column": 5 3176 }, 3177 "end": { 3178 "line": 46, 3179 "column": 2 3180 } 3181 } 3182 } 3183 ], 3184 "kind": "var", 3185 "loc": { 3186 "start": { 3187 "line": 42, 3188 "column": 1 3189 }, 3190 "end": { 3191 "line": 46, 3192 "column": 2 3193 } 3194 } 3195 }, 3196 { 3197 "type": "ClassDeclaration", 3198 "definition": { 3199 "id": { 3200 "type": "Identifier", 3201 "name": "A", 3202 "loc": { 3203 "start": { 3204 "line": 48, 3205 "column": 7 3206 }, 3207 "end": { 3208 "line": 48, 3209 "column": 8 3210 } 3211 } 3212 }, 3213 "typeParameters": { 3214 "type": "TSTypeParameterDeclaration", 3215 "params": [ 3216 { 3217 "type": "TSTypeParameter", 3218 "name": { 3219 "type": "Identifier", 3220 "name": "T", 3221 "loc": { 3222 "start": { 3223 "line": 48, 3224 "column": 9 3225 }, 3226 "end": { 3227 "line": 48, 3228 "column": 10 3229 } 3230 } 3231 }, 3232 "constraint": { 3233 "type": "TSTypeReference", 3234 "typeName": { 3235 "type": "Identifier", 3236 "name": "B", 3237 "loc": { 3238 "start": { 3239 "line": 48, 3240 "column": 19 3241 }, 3242 "end": { 3243 "line": 48, 3244 "column": 20 3245 } 3246 } 3247 }, 3248 "loc": { 3249 "start": { 3250 "line": 48, 3251 "column": 19 3252 }, 3253 "end": { 3254 "line": 48, 3255 "column": 20 3256 } 3257 } 3258 }, 3259 "in": false, 3260 "out": false, 3261 "loc": { 3262 "start": { 3263 "line": 48, 3264 "column": 9 3265 }, 3266 "end": { 3267 "line": 48, 3268 "column": 21 3269 } 3270 } 3271 }, 3272 { 3273 "type": "TSTypeParameter", 3274 "name": { 3275 "type": "Identifier", 3276 "name": "Z", 3277 "loc": { 3278 "start": { 3279 "line": 48, 3280 "column": 22 3281 }, 3282 "end": { 3283 "line": 48, 3284 "column": 23 3285 } 3286 } 3287 }, 3288 "default": { 3289 "type": "TSTypeLiteral", 3290 "members": [ 3291 { 3292 "type": "TSPropertySignature", 3293 "computed": false, 3294 "optional": false, 3295 "readonly": false, 3296 "key": { 3297 "type": "Identifier", 3298 "name": "a", 3299 "loc": { 3300 "start": { 3301 "line": 48, 3302 "column": 28 3303 }, 3304 "end": { 3305 "line": 48, 3306 "column": 29 3307 } 3308 } 3309 }, 3310 "typeAnnotation": { 3311 "type": "TSNumberKeyword", 3312 "loc": { 3313 "start": { 3314 "line": 48, 3315 "column": 31 3316 }, 3317 "end": { 3318 "line": 48, 3319 "column": 37 3320 } 3321 } 3322 }, 3323 "loc": { 3324 "start": { 3325 "line": 48, 3326 "column": 28 3327 }, 3328 "end": { 3329 "line": 48, 3330 "column": 38 3331 } 3332 } 3333 }, 3334 { 3335 "type": "TSPropertySignature", 3336 "computed": false, 3337 "optional": false, 3338 "readonly": false, 3339 "key": { 3340 "type": "Identifier", 3341 "name": "b", 3342 "loc": { 3343 "start": { 3344 "line": 48, 3345 "column": 39 3346 }, 3347 "end": { 3348 "line": 48, 3349 "column": 40 3350 } 3351 } 3352 }, 3353 "typeAnnotation": { 3354 "type": "TSStringKeyword", 3355 "loc": { 3356 "start": { 3357 "line": 48, 3358 "column": 42 3359 }, 3360 "end": { 3361 "line": 48, 3362 "column": 48 3363 } 3364 } 3365 }, 3366 "loc": { 3367 "start": { 3368 "line": 48, 3369 "column": 39 3370 }, 3371 "end": { 3372 "line": 48, 3373 "column": 50 3374 } 3375 } 3376 } 3377 ], 3378 "loc": { 3379 "start": { 3380 "line": 48, 3381 "column": 26 3382 }, 3383 "end": { 3384 "line": 48, 3385 "column": 50 3386 } 3387 } 3388 }, 3389 "in": false, 3390 "out": false, 3391 "loc": { 3392 "start": { 3393 "line": 48, 3394 "column": 22 3395 }, 3396 "end": { 3397 "line": 48, 3398 "column": 51 3399 } 3400 } 3401 } 3402 ], 3403 "loc": { 3404 "start": { 3405 "line": 48, 3406 "column": 8 3407 }, 3408 "end": { 3409 "line": 48, 3410 "column": 51 3411 } 3412 } 3413 }, 3414 "superClass": null, 3415 "implements": [], 3416 "constructor": { 3417 "type": "MethodDefinition", 3418 "key": { 3419 "type": "Identifier", 3420 "name": "constructor", 3421 "loc": { 3422 "start": { 3423 "line": 1, 3424 "column": 1 3425 }, 3426 "end": { 3427 "line": 1, 3428 "column": 1 3429 } 3430 } 3431 }, 3432 "kind": "constructor", 3433 "static": false, 3434 "optional": false, 3435 "computed": false, 3436 "value": { 3437 "type": "FunctionExpression", 3438 "function": { 3439 "type": "ScriptFunction", 3440 "id": null, 3441 "generator": false, 3442 "async": false, 3443 "expression": false, 3444 "params": [], 3445 "body": { 3446 "type": "BlockStatement", 3447 "statements": [], 3448 "loc": { 3449 "start": { 3450 "line": 1, 3451 "column": 1 3452 }, 3453 "end": { 3454 "line": 1, 3455 "column": 1 3456 } 3457 } 3458 }, 3459 "loc": { 3460 "start": { 3461 "line": 1, 3462 "column": 1 3463 }, 3464 "end": { 3465 "line": 1, 3466 "column": 1 3467 } 3468 } 3469 }, 3470 "loc": { 3471 "start": { 3472 "line": 1, 3473 "column": 1 3474 }, 3475 "end": { 3476 "line": 1, 3477 "column": 1 3478 } 3479 } 3480 }, 3481 "overloads": [], 3482 "decorators": [], 3483 "annotations": [], 3484 "loc": { 3485 "start": { 3486 "line": 48, 3487 "column": 1 3488 }, 3489 "end": { 3490 "line": 51, 3491 "column": 2 3492 } 3493 } 3494 }, 3495 "body": [ 3496 { 3497 "type": "MethodDefinition", 3498 "key": { 3499 "type": "Identifier", 3500 "name": "a", 3501 "loc": { 3502 "start": { 3503 "line": 49, 3504 "column": 12 3505 }, 3506 "end": { 3507 "line": 49, 3508 "column": 13 3509 } 3510 } 3511 }, 3512 "kind": "method", 3513 "accessibility": "public", 3514 "static": false, 3515 "optional": false, 3516 "computed": false, 3517 "value": { 3518 "type": "FunctionExpression", 3519 "function": { 3520 "type": "ScriptFunction", 3521 "id": null, 3522 "generator": false, 3523 "async": false, 3524 "expression": false, 3525 "params": [], 3526 "typeParameters": { 3527 "type": "TSTypeParameterDeclaration", 3528 "params": [ 3529 { 3530 "type": "TSTypeParameter", 3531 "name": { 3532 "type": "Identifier", 3533 "name": "T", 3534 "loc": { 3535 "start": { 3536 "line": 49, 3537 "column": 14 3538 }, 3539 "end": { 3540 "line": 49, 3541 "column": 15 3542 } 3543 } 3544 }, 3545 "in": false, 3546 "out": false, 3547 "loc": { 3548 "start": { 3549 "line": 49, 3550 "column": 14 3551 }, 3552 "end": { 3553 "line": 49, 3554 "column": 16 3555 } 3556 } 3557 }, 3558 { 3559 "type": "TSTypeParameter", 3560 "name": { 3561 "type": "Identifier", 3562 "name": "R", 3563 "loc": { 3564 "start": { 3565 "line": 49, 3566 "column": 17 3567 }, 3568 "end": { 3569 "line": 49, 3570 "column": 18 3571 } 3572 } 3573 }, 3574 "in": false, 3575 "out": false, 3576 "loc": { 3577 "start": { 3578 "line": 49, 3579 "column": 17 3580 }, 3581 "end": { 3582 "line": 49, 3583 "column": 19 3584 } 3585 } 3586 } 3587 ], 3588 "loc": { 3589 "start": { 3590 "line": 49, 3591 "column": 13 3592 }, 3593 "end": { 3594 "line": 49, 3595 "column": 19 3596 } 3597 } 3598 }, 3599 "body": { 3600 "type": "BlockStatement", 3601 "statements": [], 3602 "loc": { 3603 "start": { 3604 "line": 49, 3605 "column": 22 3606 }, 3607 "end": { 3608 "line": 49, 3609 "column": 25 3610 } 3611 } 3612 }, 3613 "loc": { 3614 "start": { 3615 "line": 49, 3616 "column": 13 3617 }, 3618 "end": { 3619 "line": 49, 3620 "column": 25 3621 } 3622 } 3623 }, 3624 "loc": { 3625 "start": { 3626 "line": 49, 3627 "column": 13 3628 }, 3629 "end": { 3630 "line": 49, 3631 "column": 25 3632 } 3633 } 3634 }, 3635 "overloads": [], 3636 "decorators": [], 3637 "annotations": [], 3638 "loc": { 3639 "start": { 3640 "line": 49, 3641 "column": 5 3642 }, 3643 "end": { 3644 "line": 49, 3645 "column": 25 3646 } 3647 } 3648 }, 3649 { 3650 "type": "MethodDefinition", 3651 "key": { 3652 "type": "Identifier", 3653 "name": "b", 3654 "loc": { 3655 "start": { 3656 "line": 50, 3657 "column": 13 3658 }, 3659 "end": { 3660 "line": 50, 3661 "column": 14 3662 } 3663 } 3664 }, 3665 "kind": "method", 3666 "accessibility": "private", 3667 "static": false, 3668 "optional": false, 3669 "computed": false, 3670 "value": { 3671 "type": "FunctionExpression", 3672 "function": { 3673 "type": "ScriptFunction", 3674 "id": null, 3675 "generator": false, 3676 "async": false, 3677 "expression": false, 3678 "params": [], 3679 "typeParameters": { 3680 "type": "TSTypeParameterDeclaration", 3681 "params": [ 3682 { 3683 "type": "TSTypeParameter", 3684 "name": { 3685 "type": "Identifier", 3686 "name": "E", 3687 "loc": { 3688 "start": { 3689 "line": 50, 3690 "column": 15 3691 }, 3692 "end": { 3693 "line": 50, 3694 "column": 16 3695 } 3696 } 3697 }, 3698 "constraint": { 3699 "type": "TSFunctionType", 3700 "params": [ 3701 { 3702 "type": "Identifier", 3703 "name": "a", 3704 "typeAnnotation": { 3705 "type": "TSNumberKeyword", 3706 "loc": { 3707 "start": { 3708 "line": 50, 3709 "column": 29 3710 }, 3711 "end": { 3712 "line": 50, 3713 "column": 35 3714 } 3715 } 3716 }, 3717 "loc": { 3718 "start": { 3719 "line": 50, 3720 "column": 26 3721 }, 3722 "end": { 3723 "line": 50, 3724 "column": 27 3725 } 3726 } 3727 }, 3728 { 3729 "type": "Identifier", 3730 "name": "b", 3731 "typeAnnotation": { 3732 "type": "TSStringKeyword", 3733 "loc": { 3734 "start": { 3735 "line": 50, 3736 "column": 40 3737 }, 3738 "end": { 3739 "line": 50, 3740 "column": 46 3741 } 3742 } 3743 }, 3744 "loc": { 3745 "start": { 3746 "line": 50, 3747 "column": 37 3748 }, 3749 "end": { 3750 "line": 50, 3751 "column": 38 3752 } 3753 } 3754 } 3755 ], 3756 "returnType": { 3757 "type": "TSArrayType", 3758 "elementType": { 3759 "type": "TSAnyKeyword", 3760 "loc": { 3761 "start": { 3762 "line": 50, 3763 "column": 51 3764 }, 3765 "end": { 3766 "line": 50, 3767 "column": 54 3768 } 3769 } 3770 }, 3771 "loc": { 3772 "start": { 3773 "line": 50, 3774 "column": 51 3775 }, 3776 "end": { 3777 "line": 50, 3778 "column": 56 3779 } 3780 } 3781 }, 3782 "loc": { 3783 "start": { 3784 "line": 50, 3785 "column": 25 3786 }, 3787 "end": { 3788 "line": 50, 3789 "column": 56 3790 } 3791 } 3792 }, 3793 "in": false, 3794 "out": false, 3795 "loc": { 3796 "start": { 3797 "line": 50, 3798 "column": 15 3799 }, 3800 "end": { 3801 "line": 50, 3802 "column": 57 3803 } 3804 } 3805 } 3806 ], 3807 "loc": { 3808 "start": { 3809 "line": 50, 3810 "column": 14 3811 }, 3812 "end": { 3813 "line": 50, 3814 "column": 57 3815 } 3816 } 3817 }, 3818 "body": { 3819 "type": "BlockStatement", 3820 "statements": [], 3821 "loc": { 3822 "start": { 3823 "line": 50, 3824 "column": 60 3825 }, 3826 "end": { 3827 "line": 50, 3828 "column": 63 3829 } 3830 } 3831 }, 3832 "loc": { 3833 "start": { 3834 "line": 50, 3835 "column": 14 3836 }, 3837 "end": { 3838 "line": 50, 3839 "column": 63 3840 } 3841 } 3842 }, 3843 "loc": { 3844 "start": { 3845 "line": 50, 3846 "column": 14 3847 }, 3848 "end": { 3849 "line": 50, 3850 "column": 63 3851 } 3852 } 3853 }, 3854 "overloads": [], 3855 "decorators": [], 3856 "annotations": [], 3857 "loc": { 3858 "start": { 3859 "line": 50, 3860 "column": 5 3861 }, 3862 "end": { 3863 "line": 50, 3864 "column": 63 3865 } 3866 } 3867 } 3868 ], 3869 "indexSignatures": [], 3870 "loc": { 3871 "start": { 3872 "line": 48, 3873 "column": 52 3874 }, 3875 "end": { 3876 "line": 51, 3877 "column": 2 3878 } 3879 } 3880 }, 3881 "decorators": [], 3882 "isAnnotationDeclaration": false, 3883 "loc": { 3884 "start": { 3885 "line": 48, 3886 "column": 1 3887 }, 3888 "end": { 3889 "line": 51, 3890 "column": 2 3891 } 3892 } 3893 }, 3894 { 3895 "type": "ClassDeclaration", 3896 "definition": { 3897 "id": { 3898 "type": "Identifier", 3899 "name": "W", 3900 "loc": { 3901 "start": { 3902 "line": 53, 3903 "column": 7 3904 }, 3905 "end": { 3906 "line": 53, 3907 "column": 8 3908 } 3909 } 3910 }, 3911 "superClass": { 3912 "type": "Identifier", 3913 "name": "T", 3914 "loc": { 3915 "start": { 3916 "line": 53, 3917 "column": 17 3918 }, 3919 "end": { 3920 "line": 53, 3921 "column": 18 3922 } 3923 } 3924 }, 3925 "superTypeParameters": { 3926 "type": "TSTypeParameterInstantiation", 3927 "params": [ 3928 { 3929 "type": "TSFunctionType", 3930 "params": [], 3931 "typeParameters": { 3932 "type": "TSTypeParameterDeclaration", 3933 "params": [ 3934 { 3935 "type": "TSTypeParameter", 3936 "name": { 3937 "type": "Identifier", 3938 "name": "B", 3939 "loc": { 3940 "start": { 3941 "line": 53, 3942 "column": 20 3943 }, 3944 "end": { 3945 "line": 53, 3946 "column": 21 3947 } 3948 } 3949 }, 3950 "in": false, 3951 "out": false, 3952 "loc": { 3953 "start": { 3954 "line": 53, 3955 "column": 20 3956 }, 3957 "end": { 3958 "line": 53, 3959 "column": 22 3960 } 3961 } 3962 } 3963 ], 3964 "loc": { 3965 "start": { 3966 "line": 53, 3967 "column": 19 3968 }, 3969 "end": { 3970 "line": 53, 3971 "column": 22 3972 } 3973 } 3974 }, 3975 "returnType": { 3976 "type": "TSNumberKeyword", 3977 "loc": { 3978 "start": { 3979 "line": 53, 3980 "column": 29 3981 }, 3982 "end": { 3983 "line": 53, 3984 "column": 35 3985 } 3986 } 3987 }, 3988 "loc": { 3989 "start": { 3990 "line": 53, 3991 "column": 19 3992 }, 3993 "end": { 3994 "line": 53, 3995 "column": 35 3996 } 3997 } 3998 }, 3999 { 4000 "type": "TSArrayType", 4001 "elementType": { 4002 "type": "TSTupleType", 4003 "elementTypes": [ 4004 { 4005 "type": "TSUnionType", 4006 "types": [ 4007 { 4008 "type": "TSNumberKeyword", 4009 "loc": { 4010 "start": { 4011 "line": 53, 4012 "column": 38 4013 }, 4014 "end": { 4015 "line": 53, 4016 "column": 44 4017 } 4018 } 4019 }, 4020 { 4021 "type": "TSStringKeyword", 4022 "loc": { 4023 "start": { 4024 "line": 53, 4025 "column": 47 4026 }, 4027 "end": { 4028 "line": 53, 4029 "column": 53 4030 } 4031 } 4032 } 4033 ], 4034 "loc": { 4035 "start": { 4036 "line": 53, 4037 "column": 38 4038 }, 4039 "end": { 4040 "line": 53, 4041 "column": 53 4042 } 4043 } 4044 } 4045 ], 4046 "loc": { 4047 "start": { 4048 "line": 53, 4049 "column": 37 4050 }, 4051 "end": { 4052 "line": 53, 4053 "column": 54 4054 } 4055 } 4056 }, 4057 "loc": { 4058 "start": { 4059 "line": 53, 4060 "column": 37 4061 }, 4062 "end": { 4063 "line": 53, 4064 "column": 56 4065 } 4066 } 4067 } 4068 ], 4069 "loc": { 4070 "start": { 4071 "line": 53, 4072 "column": 18 4073 }, 4074 "end": { 4075 "line": 53, 4076 "column": 57 4077 } 4078 } 4079 }, 4080 "implements": [], 4081 "constructor": { 4082 "type": "MethodDefinition", 4083 "key": { 4084 "type": "Identifier", 4085 "name": "constructor", 4086 "loc": { 4087 "start": { 4088 "line": 1, 4089 "column": 1 4090 }, 4091 "end": { 4092 "line": 1, 4093 "column": 1 4094 } 4095 } 4096 }, 4097 "kind": "constructor", 4098 "static": false, 4099 "optional": false, 4100 "computed": false, 4101 "value": { 4102 "type": "FunctionExpression", 4103 "function": { 4104 "type": "ScriptFunction", 4105 "id": null, 4106 "generator": false, 4107 "async": false, 4108 "expression": false, 4109 "params": [ 4110 { 4111 "type": "RestElement", 4112 "argument": { 4113 "type": "Identifier", 4114 "name": "args", 4115 "loc": { 4116 "start": { 4117 "line": 1, 4118 "column": 1 4119 }, 4120 "end": { 4121 "line": 1, 4122 "column": 1 4123 } 4124 } 4125 }, 4126 "loc": { 4127 "start": { 4128 "line": 1, 4129 "column": 1 4130 }, 4131 "end": { 4132 "line": 1, 4133 "column": 1 4134 } 4135 } 4136 } 4137 ], 4138 "body": { 4139 "type": "BlockStatement", 4140 "statements": [ 4141 { 4142 "type": "ExpressionStatement", 4143 "expression": { 4144 "type": "CallExpression", 4145 "callee": { 4146 "type": "Super", 4147 "loc": { 4148 "start": { 4149 "line": 1, 4150 "column": 1 4151 }, 4152 "end": { 4153 "line": 1, 4154 "column": 1 4155 } 4156 } 4157 }, 4158 "arguments": [ 4159 { 4160 "type": "SpreadElement", 4161 "argument": { 4162 "type": "Identifier", 4163 "name": "args", 4164 "loc": { 4165 "start": { 4166 "line": 1, 4167 "column": 1 4168 }, 4169 "end": { 4170 "line": 1, 4171 "column": 1 4172 } 4173 } 4174 }, 4175 "loc": { 4176 "start": { 4177 "line": 1, 4178 "column": 1 4179 }, 4180 "end": { 4181 "line": 1, 4182 "column": 1 4183 } 4184 } 4185 } 4186 ], 4187 "optional": false, 4188 "loc": { 4189 "start": { 4190 "line": 1, 4191 "column": 1 4192 }, 4193 "end": { 4194 "line": 1, 4195 "column": 1 4196 } 4197 } 4198 }, 4199 "loc": { 4200 "start": { 4201 "line": 1, 4202 "column": 1 4203 }, 4204 "end": { 4205 "line": 1, 4206 "column": 1 4207 } 4208 } 4209 } 4210 ], 4211 "loc": { 4212 "start": { 4213 "line": 1, 4214 "column": 1 4215 }, 4216 "end": { 4217 "line": 1, 4218 "column": 1 4219 } 4220 } 4221 }, 4222 "loc": { 4223 "start": { 4224 "line": 1, 4225 "column": 1 4226 }, 4227 "end": { 4228 "line": 1, 4229 "column": 1 4230 } 4231 } 4232 }, 4233 "loc": { 4234 "start": { 4235 "line": 1, 4236 "column": 1 4237 }, 4238 "end": { 4239 "line": 1, 4240 "column": 1 4241 } 4242 } 4243 }, 4244 "overloads": [], 4245 "decorators": [], 4246 "annotations": [], 4247 "loc": { 4248 "start": { 4249 "line": 53, 4250 "column": 1 4251 }, 4252 "end": { 4253 "line": 55, 4254 "column": 2 4255 } 4256 } 4257 }, 4258 "body": [], 4259 "indexSignatures": [], 4260 "loc": { 4261 "start": { 4262 "line": 53, 4263 "column": 58 4264 }, 4265 "end": { 4266 "line": 55, 4267 "column": 2 4268 } 4269 } 4270 }, 4271 "decorators": [], 4272 "isAnnotationDeclaration": false, 4273 "loc": { 4274 "start": { 4275 "line": 53, 4276 "column": 1 4277 }, 4278 "end": { 4279 "line": 55, 4280 "column": 2 4281 } 4282 } 4283 }, 4284 { 4285 "type": "ClassDeclaration", 4286 "definition": { 4287 "id": { 4288 "type": "Identifier", 4289 "name": "X", 4290 "loc": { 4291 "start": { 4292 "line": 57, 4293 "column": 7 4294 }, 4295 "end": { 4296 "line": 57, 4297 "column": 8 4298 } 4299 } 4300 }, 4301 "superClass": { 4302 "type": "Identifier", 4303 "name": "Q", 4304 "loc": { 4305 "start": { 4306 "line": 57, 4307 "column": 17 4308 }, 4309 "end": { 4310 "line": 57, 4311 "column": 18 4312 } 4313 } 4314 }, 4315 "superTypeParameters": { 4316 "type": "TSTypeParameterInstantiation", 4317 "params": [ 4318 { 4319 "type": "TSNumberKeyword", 4320 "loc": { 4321 "start": { 4322 "line": 57, 4323 "column": 19 4324 }, 4325 "end": { 4326 "line": 57, 4327 "column": 25 4328 } 4329 } 4330 } 4331 ], 4332 "loc": { 4333 "start": { 4334 "line": 57, 4335 "column": 18 4336 }, 4337 "end": { 4338 "line": 57, 4339 "column": 26 4340 } 4341 } 4342 }, 4343 "implements": [ 4344 { 4345 "type": "TSClassImplements", 4346 "expression": { 4347 "type": "Identifier", 4348 "name": "S", 4349 "loc": { 4350 "start": { 4351 "line": 57, 4352 "column": 38 4353 }, 4354 "end": { 4355 "line": 57, 4356 "column": 39 4357 } 4358 } 4359 }, 4360 "typeParameters": { 4361 "type": "TSTypeParameterInstantiation", 4362 "params": [ 4363 { 4364 "type": "TSFunctionType", 4365 "params": [ 4366 { 4367 "type": "Identifier", 4368 "name": "a", 4369 "typeAnnotation": { 4370 "type": "TSNumberKeyword", 4371 "loc": { 4372 "start": { 4373 "line": 57, 4374 "column": 46 4375 }, 4376 "end": { 4377 "line": 57, 4378 "column": 52 4379 } 4380 } 4381 }, 4382 "loc": { 4383 "start": { 4384 "line": 57, 4385 "column": 44 4386 }, 4387 "end": { 4388 "line": 57, 4389 "column": 45 4390 } 4391 } 4392 }, 4393 { 4394 "type": "Identifier", 4395 "name": "b", 4396 "typeAnnotation": { 4397 "type": "TSStringKeyword", 4398 "loc": { 4399 "start": { 4400 "line": 57, 4401 "column": 56 4402 }, 4403 "end": { 4404 "line": 57, 4405 "column": 62 4406 } 4407 } 4408 }, 4409 "loc": { 4410 "start": { 4411 "line": 57, 4412 "column": 54 4413 }, 4414 "end": { 4415 "line": 57, 4416 "column": 55 4417 } 4418 } 4419 } 4420 ], 4421 "typeParameters": { 4422 "type": "TSTypeParameterDeclaration", 4423 "params": [ 4424 { 4425 "type": "TSTypeParameter", 4426 "name": { 4427 "type": "Identifier", 4428 "name": "R", 4429 "loc": { 4430 "start": { 4431 "line": 57, 4432 "column": 41 4433 }, 4434 "end": { 4435 "line": 57, 4436 "column": 42 4437 } 4438 } 4439 }, 4440 "in": false, 4441 "out": false, 4442 "loc": { 4443 "start": { 4444 "line": 57, 4445 "column": 41 4446 }, 4447 "end": { 4448 "line": 57, 4449 "column": 43 4450 } 4451 } 4452 } 4453 ], 4454 "loc": { 4455 "start": { 4456 "line": 57, 4457 "column": 40 4458 }, 4459 "end": { 4460 "line": 57, 4461 "column": 43 4462 } 4463 } 4464 }, 4465 "returnType": { 4466 "type": "TSTupleType", 4467 "elementTypes": [ 4468 { 4469 "type": "TSNumberKeyword", 4470 "loc": { 4471 "start": { 4472 "line": 57, 4473 "column": 68 4474 }, 4475 "end": { 4476 "line": 57, 4477 "column": 74 4478 } 4479 } 4480 } 4481 ], 4482 "loc": { 4483 "start": { 4484 "line": 57, 4485 "column": 67 4486 }, 4487 "end": { 4488 "line": 57, 4489 "column": 75 4490 } 4491 } 4492 }, 4493 "loc": { 4494 "start": { 4495 "line": 57, 4496 "column": 40 4497 }, 4498 "end": { 4499 "line": 57, 4500 "column": 75 4501 } 4502 } 4503 } 4504 ], 4505 "loc": { 4506 "start": { 4507 "line": 57, 4508 "column": 39 4509 }, 4510 "end": { 4511 "line": 57, 4512 "column": 76 4513 } 4514 } 4515 }, 4516 "loc": { 4517 "start": { 4518 "line": 57, 4519 "column": 38 4520 }, 4521 "end": { 4522 "line": 57, 4523 "column": 77 4524 } 4525 } 4526 }, 4527 { 4528 "type": "TSClassImplements", 4529 "expression": { 4530 "type": "Identifier", 4531 "name": "A", 4532 "loc": { 4533 "start": { 4534 "line": 57, 4535 "column": 78 4536 }, 4537 "end": { 4538 "line": 57, 4539 "column": 79 4540 } 4541 } 4542 }, 4543 "loc": { 4544 "start": { 4545 "line": 57, 4546 "column": 78 4547 }, 4548 "end": { 4549 "line": 57, 4550 "column": 81 4551 } 4552 } 4553 } 4554 ], 4555 "constructor": { 4556 "type": "MethodDefinition", 4557 "key": { 4558 "type": "Identifier", 4559 "name": "constructor", 4560 "loc": { 4561 "start": { 4562 "line": 1, 4563 "column": 1 4564 }, 4565 "end": { 4566 "line": 1, 4567 "column": 1 4568 } 4569 } 4570 }, 4571 "kind": "constructor", 4572 "static": false, 4573 "optional": false, 4574 "computed": false, 4575 "value": { 4576 "type": "FunctionExpression", 4577 "function": { 4578 "type": "ScriptFunction", 4579 "id": null, 4580 "generator": false, 4581 "async": false, 4582 "expression": false, 4583 "params": [ 4584 { 4585 "type": "RestElement", 4586 "argument": { 4587 "type": "Identifier", 4588 "name": "args", 4589 "loc": { 4590 "start": { 4591 "line": 1, 4592 "column": 1 4593 }, 4594 "end": { 4595 "line": 1, 4596 "column": 1 4597 } 4598 } 4599 }, 4600 "loc": { 4601 "start": { 4602 "line": 1, 4603 "column": 1 4604 }, 4605 "end": { 4606 "line": 1, 4607 "column": 1 4608 } 4609 } 4610 } 4611 ], 4612 "body": { 4613 "type": "BlockStatement", 4614 "statements": [ 4615 { 4616 "type": "ExpressionStatement", 4617 "expression": { 4618 "type": "CallExpression", 4619 "callee": { 4620 "type": "Super", 4621 "loc": { 4622 "start": { 4623 "line": 1, 4624 "column": 1 4625 }, 4626 "end": { 4627 "line": 1, 4628 "column": 1 4629 } 4630 } 4631 }, 4632 "arguments": [ 4633 { 4634 "type": "SpreadElement", 4635 "argument": { 4636 "type": "Identifier", 4637 "name": "args", 4638 "loc": { 4639 "start": { 4640 "line": 1, 4641 "column": 1 4642 }, 4643 "end": { 4644 "line": 1, 4645 "column": 1 4646 } 4647 } 4648 }, 4649 "loc": { 4650 "start": { 4651 "line": 1, 4652 "column": 1 4653 }, 4654 "end": { 4655 "line": 1, 4656 "column": 1 4657 } 4658 } 4659 } 4660 ], 4661 "optional": false, 4662 "loc": { 4663 "start": { 4664 "line": 1, 4665 "column": 1 4666 }, 4667 "end": { 4668 "line": 1, 4669 "column": 1 4670 } 4671 } 4672 }, 4673 "loc": { 4674 "start": { 4675 "line": 1, 4676 "column": 1 4677 }, 4678 "end": { 4679 "line": 1, 4680 "column": 1 4681 } 4682 } 4683 } 4684 ], 4685 "loc": { 4686 "start": { 4687 "line": 1, 4688 "column": 1 4689 }, 4690 "end": { 4691 "line": 1, 4692 "column": 1 4693 } 4694 } 4695 }, 4696 "loc": { 4697 "start": { 4698 "line": 1, 4699 "column": 1 4700 }, 4701 "end": { 4702 "line": 1, 4703 "column": 1 4704 } 4705 } 4706 }, 4707 "loc": { 4708 "start": { 4709 "line": 1, 4710 "column": 1 4711 }, 4712 "end": { 4713 "line": 1, 4714 "column": 1 4715 } 4716 } 4717 }, 4718 "overloads": [], 4719 "decorators": [], 4720 "annotations": [], 4721 "loc": { 4722 "start": { 4723 "line": 57, 4724 "column": 1 4725 }, 4726 "end": { 4727 "line": 59, 4728 "column": 2 4729 } 4730 } 4731 }, 4732 "body": [], 4733 "indexSignatures": [], 4734 "loc": { 4735 "start": { 4736 "line": 57, 4737 "column": 80 4738 }, 4739 "end": { 4740 "line": 59, 4741 "column": 2 4742 } 4743 } 4744 }, 4745 "decorators": [], 4746 "isAnnotationDeclaration": false, 4747 "loc": { 4748 "start": { 4749 "line": 57, 4750 "column": 1 4751 }, 4752 "end": { 4753 "line": 59, 4754 "column": 2 4755 } 4756 } 4757 }, 4758 { 4759 "type": "VariableDeclaration", 4760 "declarations": [ 4761 { 4762 "type": "VariableDeclarator", 4763 "id": { 4764 "type": "Identifier", 4765 "name": "a", 4766 "typeAnnotation": { 4767 "type": "TSConstructorType", 4768 "params": [], 4769 "typeParameters": { 4770 "type": "TSTypeParameterDeclaration", 4771 "params": [ 4772 { 4773 "type": "TSTypeParameter", 4774 "name": { 4775 "type": "Identifier", 4776 "name": "A", 4777 "loc": { 4778 "start": { 4779 "line": 61, 4780 "column": 13 4781 }, 4782 "end": { 4783 "line": 61, 4784 "column": 14 4785 } 4786 } 4787 }, 4788 "in": false, 4789 "out": false, 4790 "loc": { 4791 "start": { 4792 "line": 61, 4793 "column": 13 4794 }, 4795 "end": { 4796 "line": 61, 4797 "column": 15 4798 } 4799 } 4800 } 4801 ], 4802 "loc": { 4803 "start": { 4804 "line": 61, 4805 "column": 12 4806 }, 4807 "end": { 4808 "line": 61, 4809 "column": 15 4810 } 4811 } 4812 }, 4813 "returnType": { 4814 "type": "TSFunctionType", 4815 "params": [], 4816 "typeParameters": { 4817 "type": "TSTypeParameterDeclaration", 4818 "params": [ 4819 { 4820 "type": "TSTypeParameter", 4821 "name": { 4822 "type": "Identifier", 4823 "name": "B", 4824 "loc": { 4825 "start": { 4826 "line": 61, 4827 "column": 22 4828 }, 4829 "end": { 4830 "line": 61, 4831 "column": 23 4832 } 4833 } 4834 }, 4835 "in": false, 4836 "out": false, 4837 "loc": { 4838 "start": { 4839 "line": 61, 4840 "column": 22 4841 }, 4842 "end": { 4843 "line": 61, 4844 "column": 24 4845 } 4846 } 4847 } 4848 ], 4849 "loc": { 4850 "start": { 4851 "line": 61, 4852 "column": 21 4853 }, 4854 "end": { 4855 "line": 61, 4856 "column": 24 4857 } 4858 } 4859 }, 4860 "returnType": { 4861 "type": "TSStringKeyword", 4862 "loc": { 4863 "start": { 4864 "line": 61, 4865 "column": 30 4866 }, 4867 "end": { 4868 "line": 61, 4869 "column": 36 4870 } 4871 } 4872 }, 4873 "loc": { 4874 "start": { 4875 "line": 61, 4876 "column": 21 4877 }, 4878 "end": { 4879 "line": 61, 4880 "column": 36 4881 } 4882 } 4883 }, 4884 "loc": { 4885 "start": { 4886 "line": 61, 4887 "column": 8 4888 }, 4889 "end": { 4890 "line": 61, 4891 "column": 36 4892 } 4893 } 4894 }, 4895 "loc": { 4896 "start": { 4897 "line": 61, 4898 "column": 5 4899 }, 4900 "end": { 4901 "line": 61, 4902 "column": 6 4903 } 4904 } 4905 }, 4906 "init": null, 4907 "loc": { 4908 "start": { 4909 "line": 61, 4910 "column": 5 4911 }, 4912 "end": { 4913 "line": 61, 4914 "column": 6 4915 } 4916 } 4917 } 4918 ], 4919 "kind": "var", 4920 "loc": { 4921 "start": { 4922 "line": 61, 4923 "column": 1 4924 }, 4925 "end": { 4926 "line": 61, 4927 "column": 37 4928 } 4929 } 4930 }, 4931 { 4932 "type": "VariableDeclaration", 4933 "declarations": [ 4934 { 4935 "type": "VariableDeclarator", 4936 "id": { 4937 "type": "Identifier", 4938 "name": "b", 4939 "typeAnnotation": { 4940 "type": "TSFunctionType", 4941 "params": [ 4942 { 4943 "type": "Identifier", 4944 "name": "a", 4945 "typeAnnotation": { 4946 "type": "TSUnionType", 4947 "types": [ 4948 { 4949 "type": "TSNumberKeyword", 4950 "loc": { 4951 "start": { 4952 "line": 62, 4953 "column": 32 4954 }, 4955 "end": { 4956 "line": 62, 4957 "column": 38 4958 } 4959 } 4960 }, 4961 { 4962 "type": "TSStringKeyword", 4963 "loc": { 4964 "start": { 4965 "line": 62, 4966 "column": 41 4967 }, 4968 "end": { 4969 "line": 62, 4970 "column": 47 4971 } 4972 } 4973 } 4974 ], 4975 "loc": { 4976 "start": { 4977 "line": 62, 4978 "column": 32 4979 }, 4980 "end": { 4981 "line": 62, 4982 "column": 47 4983 } 4984 } 4985 }, 4986 "loc": { 4987 "start": { 4988 "line": 62, 4989 "column": 29 4990 }, 4991 "end": { 4992 "line": 62, 4993 "column": 30 4994 } 4995 } 4996 } 4997 ], 4998 "typeParameters": { 4999 "type": "TSTypeParameterDeclaration", 5000 "params": [ 5001 { 5002 "type": "TSTypeParameter", 5003 "name": { 5004 "type": "Identifier", 5005 "name": "A", 5006 "loc": { 5007 "start": { 5008 "line": 62, 5009 "column": 9 5010 }, 5011 "end": { 5012 "line": 62, 5013 "column": 10 5014 } 5015 } 5016 }, 5017 "constraint": { 5018 "type": "TSTypeReference", 5019 "typeName": { 5020 "type": "Identifier", 5021 "name": "T", 5022 "loc": { 5023 "start": { 5024 "line": 62, 5025 "column": 19 5026 }, 5027 "end": { 5028 "line": 62, 5029 "column": 20 5030 } 5031 } 5032 }, 5033 "loc": { 5034 "start": { 5035 "line": 62, 5036 "column": 19 5037 }, 5038 "end": { 5039 "line": 62, 5040 "column": 20 5041 } 5042 } 5043 }, 5044 "in": false, 5045 "out": false, 5046 "loc": { 5047 "start": { 5048 "line": 62, 5049 "column": 9 5050 }, 5051 "end": { 5052 "line": 62, 5053 "column": 21 5054 } 5055 } 5056 }, 5057 { 5058 "type": "TSTypeParameter", 5059 "name": { 5060 "type": "Identifier", 5061 "name": "U", 5062 "loc": { 5063 "start": { 5064 "line": 62, 5065 "column": 22 5066 }, 5067 "end": { 5068 "line": 62, 5069 "column": 23 5070 } 5071 } 5072 }, 5073 "default": { 5074 "type": "TSLiteralType", 5075 "literal": { 5076 "type": "NumberLiteral", 5077 "value": 5, 5078 "loc": { 5079 "start": { 5080 "line": 62, 5081 "column": 26 5082 }, 5083 "end": { 5084 "line": 62, 5085 "column": 27 5086 } 5087 } 5088 }, 5089 "loc": { 5090 "start": { 5091 "line": 62, 5092 "column": 26 5093 }, 5094 "end": { 5095 "line": 62, 5096 "column": 27 5097 } 5098 } 5099 }, 5100 "in": false, 5101 "out": false, 5102 "loc": { 5103 "start": { 5104 "line": 62, 5105 "column": 22 5106 }, 5107 "end": { 5108 "line": 62, 5109 "column": 28 5110 } 5111 } 5112 } 5113 ], 5114 "loc": { 5115 "start": { 5116 "line": 62, 5117 "column": 8 5118 }, 5119 "end": { 5120 "line": 62, 5121 "column": 28 5122 } 5123 } 5124 }, 5125 "returnType": { 5126 "type": "TSTypeLiteral", 5127 "members": [ 5128 { 5129 "type": "TSPropertySignature", 5130 "computed": false, 5131 "optional": false, 5132 "readonly": false, 5133 "key": { 5134 "type": "Identifier", 5135 "name": "a", 5136 "loc": { 5137 "start": { 5138 "line": 62, 5139 "column": 54 5140 }, 5141 "end": { 5142 "line": 62, 5143 "column": 55 5144 } 5145 } 5146 }, 5147 "typeAnnotation": { 5148 "type": "TSNumberKeyword", 5149 "loc": { 5150 "start": { 5151 "line": 62, 5152 "column": 57 5153 }, 5154 "end": { 5155 "line": 62, 5156 "column": 63 5157 } 5158 } 5159 }, 5160 "loc": { 5161 "start": { 5162 "line": 62, 5163 "column": 54 5164 }, 5165 "end": { 5166 "line": 62, 5167 "column": 65 5168 } 5169 } 5170 } 5171 ], 5172 "loc": { 5173 "start": { 5174 "line": 62, 5175 "column": 52 5176 }, 5177 "end": { 5178 "line": 62, 5179 "column": 65 5180 } 5181 } 5182 }, 5183 "loc": { 5184 "start": { 5185 "line": 62, 5186 "column": 8 5187 }, 5188 "end": { 5189 "line": 62, 5190 "column": 65 5191 } 5192 } 5193 }, 5194 "loc": { 5195 "start": { 5196 "line": 62, 5197 "column": 5 5198 }, 5199 "end": { 5200 "line": 62, 5201 "column": 6 5202 } 5203 } 5204 }, 5205 "init": null, 5206 "loc": { 5207 "start": { 5208 "line": 62, 5209 "column": 5 5210 }, 5211 "end": { 5212 "line": 62, 5213 "column": 6 5214 } 5215 } 5216 } 5217 ], 5218 "kind": "var", 5219 "loc": { 5220 "start": { 5221 "line": 62, 5222 "column": 1 5223 }, 5224 "end": { 5225 "line": 62, 5226 "column": 66 5227 } 5228 } 5229 }, 5230 { 5231 "type": "VariableDeclaration", 5232 "declarations": [ 5233 { 5234 "type": "VariableDeclarator", 5235 "id": { 5236 "type": "Identifier", 5237 "name": "c", 5238 "typeAnnotation": { 5239 "type": "TSIndexedAccessType", 5240 "objectType": { 5241 "type": "TSTypeReference", 5242 "typeName": { 5243 "type": "TSQualifiedName", 5244 "left": { 5245 "type": "Identifier", 5246 "name": "B", 5247 "loc": { 5248 "start": { 5249 "line": 64, 5250 "column": 8 5251 }, 5252 "end": { 5253 "line": 64, 5254 "column": 9 5255 } 5256 } 5257 }, 5258 "right": { 5259 "type": "Identifier", 5260 "name": "T", 5261 "loc": { 5262 "start": { 5263 "line": 64, 5264 "column": 10 5265 }, 5266 "end": { 5267 "line": 64, 5268 "column": 11 5269 } 5270 } 5271 }, 5272 "loc": { 5273 "start": { 5274 "line": 64, 5275 "column": 8 5276 }, 5277 "end": { 5278 "line": 64, 5279 "column": 12 5280 } 5281 } 5282 }, 5283 "typeParameters": { 5284 "type": "TSTypeParameterInstantiation", 5285 "params": [ 5286 { 5287 "type": "TSTypeReference", 5288 "typeName": { 5289 "type": "Identifier", 5290 "name": "A", 5291 "loc": { 5292 "start": { 5293 "line": 64, 5294 "column": 12 5295 }, 5296 "end": { 5297 "line": 64, 5298 "column": 13 5299 } 5300 } 5301 }, 5302 "typeParameters": { 5303 "type": "TSTypeParameterInstantiation", 5304 "params": [ 5305 { 5306 "type": "TSTypeReference", 5307 "typeName": { 5308 "type": "Identifier", 5309 "name": "C", 5310 "loc": { 5311 "start": { 5312 "line": 64, 5313 "column": 14 5314 }, 5315 "end": { 5316 "line": 64, 5317 "column": 15 5318 } 5319 } 5320 }, 5321 "typeParameters": { 5322 "type": "TSTypeParameterInstantiation", 5323 "params": [ 5324 { 5325 "type": "TSNumberKeyword", 5326 "loc": { 5327 "start": { 5328 "line": 64, 5329 "column": 16 5330 }, 5331 "end": { 5332 "line": 64, 5333 "column": 22 5334 } 5335 } 5336 } 5337 ], 5338 "loc": { 5339 "start": { 5340 "line": 64, 5341 "column": 15 5342 }, 5343 "end": { 5344 "line": 64, 5345 "column": 25 5346 } 5347 } 5348 }, 5349 "loc": { 5350 "start": { 5351 "line": 64, 5352 "column": 14 5353 }, 5354 "end": { 5355 "line": 64, 5356 "column": 15 5357 } 5358 } 5359 } 5360 ], 5361 "loc": { 5362 "start": { 5363 "line": 64, 5364 "column": 13 5365 }, 5366 "end": { 5367 "line": 64, 5368 "column": 25 5369 } 5370 } 5371 }, 5372 "loc": { 5373 "start": { 5374 "line": 64, 5375 "column": 12 5376 }, 5377 "end": { 5378 "line": 64, 5379 "column": 13 5380 } 5381 } 5382 } 5383 ], 5384 "loc": { 5385 "start": { 5386 "line": 64, 5387 "column": 11 5388 }, 5389 "end": { 5390 "line": 64, 5391 "column": 25 5392 } 5393 } 5394 }, 5395 "loc": { 5396 "start": { 5397 "line": 64, 5398 "column": 8 5399 }, 5400 "end": { 5401 "line": 64, 5402 "column": 26 5403 } 5404 } 5405 }, 5406 "indexType": { 5407 "type": "TSLiteralType", 5408 "literal": { 5409 "type": "NumberLiteral", 5410 "value": 0, 5411 "loc": { 5412 "start": { 5413 "line": 64, 5414 "column": 26 5415 }, 5416 "end": { 5417 "line": 64, 5418 "column": 27 5419 } 5420 } 5421 }, 5422 "loc": { 5423 "start": { 5424 "line": 64, 5425 "column": 26 5426 }, 5427 "end": { 5428 "line": 64, 5429 "column": 27 5430 } 5431 } 5432 }, 5433 "loc": { 5434 "start": { 5435 "line": 64, 5436 "column": 8 5437 }, 5438 "end": { 5439 "line": 64, 5440 "column": 29 5441 } 5442 } 5443 }, 5444 "loc": { 5445 "start": { 5446 "line": 64, 5447 "column": 5 5448 }, 5449 "end": { 5450 "line": 64, 5451 "column": 6 5452 } 5453 } 5454 }, 5455 "init": null, 5456 "loc": { 5457 "start": { 5458 "line": 64, 5459 "column": 5 5460 }, 5461 "end": { 5462 "line": 64, 5463 "column": 6 5464 } 5465 } 5466 } 5467 ], 5468 "kind": "var", 5469 "loc": { 5470 "start": { 5471 "line": 64, 5472 "column": 1 5473 }, 5474 "end": { 5475 "line": 64, 5476 "column": 29 5477 } 5478 } 5479 }, 5480 { 5481 "type": "VariableDeclaration", 5482 "declarations": [ 5483 { 5484 "type": "VariableDeclarator", 5485 "id": { 5486 "type": "Identifier", 5487 "name": "d", 5488 "typeAnnotation": { 5489 "type": "TSTypeReference", 5490 "typeName": { 5491 "type": "Identifier", 5492 "name": "A", 5493 "loc": { 5494 "start": { 5495 "line": 65, 5496 "column": 8 5497 }, 5498 "end": { 5499 "line": 65, 5500 "column": 9 5501 } 5502 } 5503 }, 5504 "typeParameters": { 5505 "type": "TSTypeParameterInstantiation", 5506 "params": [ 5507 { 5508 "type": "TSNumberKeyword", 5509 "loc": { 5510 "start": { 5511 "line": 65, 5512 "column": 10 5513 }, 5514 "end": { 5515 "line": 65, 5516 "column": 16 5517 } 5518 } 5519 }, 5520 { 5521 "type": "TSTypeLiteral", 5522 "members": [ 5523 { 5524 "type": "TSPropertySignature", 5525 "computed": false, 5526 "optional": false, 5527 "readonly": false, 5528 "key": { 5529 "type": "Identifier", 5530 "name": "a", 5531 "loc": { 5532 "start": { 5533 "line": 65, 5534 "column": 20 5535 }, 5536 "end": { 5537 "line": 65, 5538 "column": 21 5539 } 5540 } 5541 }, 5542 "typeAnnotation": { 5543 "type": "TSNumberKeyword", 5544 "loc": { 5545 "start": { 5546 "line": 65, 5547 "column": 23 5548 }, 5549 "end": { 5550 "line": 65, 5551 "column": 29 5552 } 5553 } 5554 }, 5555 "loc": { 5556 "start": { 5557 "line": 65, 5558 "column": 20 5559 }, 5560 "end": { 5561 "line": 65, 5562 "column": 30 5563 } 5564 } 5565 }, 5566 { 5567 "type": "TSPropertySignature", 5568 "computed": false, 5569 "optional": false, 5570 "readonly": false, 5571 "key": { 5572 "type": "Identifier", 5573 "name": "b", 5574 "loc": { 5575 "start": { 5576 "line": 65, 5577 "column": 31 5578 }, 5579 "end": { 5580 "line": 65, 5581 "column": 32 5582 } 5583 } 5584 }, 5585 "typeAnnotation": { 5586 "type": "TSStringKeyword", 5587 "loc": { 5588 "start": { 5589 "line": 65, 5590 "column": 34 5591 }, 5592 "end": { 5593 "line": 65, 5594 "column": 40 5595 } 5596 } 5597 }, 5598 "loc": { 5599 "start": { 5600 "line": 65, 5601 "column": 31 5602 }, 5603 "end": { 5604 "line": 65, 5605 "column": 42 5606 } 5607 } 5608 } 5609 ], 5610 "loc": { 5611 "start": { 5612 "line": 65, 5613 "column": 18 5614 }, 5615 "end": { 5616 "line": 65, 5617 "column": 42 5618 } 5619 } 5620 }, 5621 { 5622 "type": "TSTupleType", 5623 "elementTypes": [ 5624 { 5625 "type": "TSNumberKeyword", 5626 "loc": { 5627 "start": { 5628 "line": 65, 5629 "column": 45 5630 }, 5631 "end": { 5632 "line": 65, 5633 "column": 51 5634 } 5635 } 5636 }, 5637 { 5638 "type": "TSStringKeyword", 5639 "loc": { 5640 "start": { 5641 "line": 65, 5642 "column": 53 5643 }, 5644 "end": { 5645 "line": 65, 5646 "column": 59 5647 } 5648 } 5649 } 5650 ], 5651 "loc": { 5652 "start": { 5653 "line": 65, 5654 "column": 44 5655 }, 5656 "end": { 5657 "line": 65, 5658 "column": 60 5659 } 5660 } 5661 } 5662 ], 5663 "loc": { 5664 "start": { 5665 "line": 65, 5666 "column": 9 5667 }, 5668 "end": { 5669 "line": 65, 5670 "column": 61 5671 } 5672 } 5673 }, 5674 "loc": { 5675 "start": { 5676 "line": 65, 5677 "column": 8 5678 }, 5679 "end": { 5680 "line": 65, 5681 "column": 9 5682 } 5683 } 5684 }, 5685 "loc": { 5686 "start": { 5687 "line": 65, 5688 "column": 5 5689 }, 5690 "end": { 5691 "line": 65, 5692 "column": 6 5693 } 5694 } 5695 }, 5696 "init": null, 5697 "loc": { 5698 "start": { 5699 "line": 65, 5700 "column": 5 5701 }, 5702 "end": { 5703 "line": 65, 5704 "column": 6 5705 } 5706 } 5707 } 5708 ], 5709 "kind": "var", 5710 "loc": { 5711 "start": { 5712 "line": 65, 5713 "column": 1 5714 }, 5715 "end": { 5716 "line": 65, 5717 "column": 62 5718 } 5719 } 5720 }, 5721 { 5722 "type": "VariableDeclaration", 5723 "declarations": [ 5724 { 5725 "type": "VariableDeclarator", 5726 "id": { 5727 "type": "Identifier", 5728 "name": "e", 5729 "typeAnnotation": { 5730 "type": "TSTypeReference", 5731 "typeName": { 5732 "type": "Identifier", 5733 "name": "T", 5734 "loc": { 5735 "start": { 5736 "line": 66, 5737 "column": 8 5738 }, 5739 "end": { 5740 "line": 66, 5741 "column": 9 5742 } 5743 } 5744 }, 5745 "typeParameters": { 5746 "type": "TSTypeParameterInstantiation", 5747 "params": [ 5748 { 5749 "type": "TSFunctionType", 5750 "params": [], 5751 "typeParameters": { 5752 "type": "TSTypeParameterDeclaration", 5753 "params": [ 5754 { 5755 "type": "TSTypeParameter", 5756 "name": { 5757 "type": "Identifier", 5758 "name": "A", 5759 "loc": { 5760 "start": { 5761 "line": 66, 5762 "column": 11 5763 }, 5764 "end": { 5765 "line": 66, 5766 "column": 12 5767 } 5768 } 5769 }, 5770 "in": false, 5771 "out": false, 5772 "loc": { 5773 "start": { 5774 "line": 66, 5775 "column": 11 5776 }, 5777 "end": { 5778 "line": 66, 5779 "column": 13 5780 } 5781 } 5782 } 5783 ], 5784 "loc": { 5785 "start": { 5786 "line": 66, 5787 "column": 10 5788 }, 5789 "end": { 5790 "line": 66, 5791 "column": 13 5792 } 5793 } 5794 }, 5795 "returnType": { 5796 "type": "TSTypeLiteral", 5797 "members": [], 5798 "loc": { 5799 "start": { 5800 "line": 66, 5801 "column": 19 5802 }, 5803 "end": { 5804 "line": 66, 5805 "column": 21 5806 } 5807 } 5808 }, 5809 "loc": { 5810 "start": { 5811 "line": 66, 5812 "column": 10 5813 }, 5814 "end": { 5815 "line": 66, 5816 "column": 21 5817 } 5818 } 5819 } 5820 ], 5821 "loc": { 5822 "start": { 5823 "line": 66, 5824 "column": 9 5825 }, 5826 "end": { 5827 "line": 66, 5828 "column": 22 5829 } 5830 } 5831 }, 5832 "loc": { 5833 "start": { 5834 "line": 66, 5835 "column": 8 5836 }, 5837 "end": { 5838 "line": 66, 5839 "column": 9 5840 } 5841 } 5842 }, 5843 "loc": { 5844 "start": { 5845 "line": 66, 5846 "column": 5 5847 }, 5848 "end": { 5849 "line": 66, 5850 "column": 6 5851 } 5852 } 5853 }, 5854 "init": null, 5855 "loc": { 5856 "start": { 5857 "line": 66, 5858 "column": 5 5859 }, 5860 "end": { 5861 "line": 66, 5862 "column": 6 5863 } 5864 } 5865 } 5866 ], 5867 "kind": "var", 5868 "loc": { 5869 "start": { 5870 "line": 66, 5871 "column": 1 5872 }, 5873 "end": { 5874 "line": 66, 5875 "column": 23 5876 } 5877 } 5878 }, 5879 { 5880 "type": "TSTypeAliasDeclaration", 5881 "id": { 5882 "type": "Identifier", 5883 "name": "E", 5884 "loc": { 5885 "start": { 5886 "line": 68, 5887 "column": 6 5888 }, 5889 "end": { 5890 "line": 68, 5891 "column": 7 5892 } 5893 } 5894 }, 5895 "typeAnnotation": { 5896 "type": "TSUnionType", 5897 "types": [ 5898 { 5899 "type": "TSNumberKeyword", 5900 "loc": { 5901 "start": { 5902 "line": 68, 5903 "column": 38 5904 }, 5905 "end": { 5906 "line": 68, 5907 "column": 44 5908 } 5909 } 5910 }, 5911 { 5912 "type": "TSTypeReference", 5913 "typeName": { 5914 "type": "Identifier", 5915 "name": "T", 5916 "loc": { 5917 "start": { 5918 "line": 68, 5919 "column": 47 5920 }, 5921 "end": { 5922 "line": 68, 5923 "column": 48 5924 } 5925 } 5926 }, 5927 "loc": { 5928 "start": { 5929 "line": 68, 5930 "column": 47 5931 }, 5932 "end": { 5933 "line": 68, 5934 "column": 48 5935 } 5936 } 5937 }, 5938 { 5939 "type": "TSStringKeyword", 5940 "loc": { 5941 "start": { 5942 "line": 68, 5943 "column": 51 5944 }, 5945 "end": { 5946 "line": 68, 5947 "column": 57 5948 } 5949 } 5950 } 5951 ], 5952 "loc": { 5953 "start": { 5954 "line": 68, 5955 "column": 38 5956 }, 5957 "end": { 5958 "line": 68, 5959 "column": 57 5960 } 5961 } 5962 }, 5963 "typeParameters": { 5964 "type": "TSTypeParameterDeclaration", 5965 "params": [ 5966 { 5967 "type": "TSTypeParameter", 5968 "name": { 5969 "type": "Identifier", 5970 "name": "R", 5971 "loc": { 5972 "start": { 5973 "line": 68, 5974 "column": 8 5975 }, 5976 "end": { 5977 "line": 68, 5978 "column": 9 5979 } 5980 } 5981 }, 5982 "constraint": { 5983 "type": "TSTypeReference", 5984 "typeName": { 5985 "type": "Identifier", 5986 "name": "B", 5987 "loc": { 5988 "start": { 5989 "line": 68, 5990 "column": 18 5991 }, 5992 "end": { 5993 "line": 68, 5994 "column": 19 5995 } 5996 } 5997 }, 5998 "loc": { 5999 "start": { 6000 "line": 68, 6001 "column": 18 6002 }, 6003 "end": { 6004 "line": 68, 6005 "column": 19 6006 } 6007 } 6008 }, 6009 "in": false, 6010 "out": false, 6011 "loc": { 6012 "start": { 6013 "line": 68, 6014 "column": 8 6015 }, 6016 "end": { 6017 "line": 68, 6018 "column": 20 6019 } 6020 } 6021 }, 6022 { 6023 "type": "TSTypeParameter", 6024 "name": { 6025 "type": "Identifier", 6026 "name": "C", 6027 "loc": { 6028 "start": { 6029 "line": 68, 6030 "column": 21 6031 }, 6032 "end": { 6033 "line": 68, 6034 "column": 22 6035 } 6036 } 6037 }, 6038 "in": false, 6039 "out": false, 6040 "loc": { 6041 "start": { 6042 "line": 68, 6043 "column": 21 6044 }, 6045 "end": { 6046 "line": 68, 6047 "column": 23 6048 } 6049 } 6050 }, 6051 { 6052 "type": "TSTypeParameter", 6053 "name": { 6054 "type": "Identifier", 6055 "name": "T", 6056 "loc": { 6057 "start": { 6058 "line": 68, 6059 "column": 24 6060 }, 6061 "end": { 6062 "line": 68, 6063 "column": 25 6064 } 6065 } 6066 }, 6067 "default": { 6068 "type": "TSNumberKeyword", 6069 "loc": { 6070 "start": { 6071 "line": 68, 6072 "column": 28 6073 }, 6074 "end": { 6075 "line": 68, 6076 "column": 34 6077 } 6078 } 6079 }, 6080 "in": false, 6081 "out": false, 6082 "loc": { 6083 "start": { 6084 "line": 68, 6085 "column": 24 6086 }, 6087 "end": { 6088 "line": 68, 6089 "column": 35 6090 } 6091 } 6092 } 6093 ], 6094 "loc": { 6095 "start": { 6096 "line": 68, 6097 "column": 7 6098 }, 6099 "end": { 6100 "line": 68, 6101 "column": 35 6102 } 6103 } 6104 }, 6105 "loc": { 6106 "start": { 6107 "line": 68, 6108 "column": 1 6109 }, 6110 "end": { 6111 "line": 68, 6112 "column": 58 6113 } 6114 } 6115 }, 6116 { 6117 "type": "TSTypeAliasDeclaration", 6118 "id": { 6119 "type": "Identifier", 6120 "name": "P", 6121 "loc": { 6122 "start": { 6123 "line": 69, 6124 "column": 6 6125 }, 6126 "end": { 6127 "line": 69, 6128 "column": 7 6129 } 6130 } 6131 }, 6132 "typeAnnotation": { 6133 "type": "TSTypeLiteral", 6134 "members": [ 6135 { 6136 "type": "TSPropertySignature", 6137 "computed": false, 6138 "optional": false, 6139 "readonly": false, 6140 "key": { 6141 "type": "Identifier", 6142 "name": "a", 6143 "loc": { 6144 "start": { 6145 "line": 69, 6146 "column": 52 6147 }, 6148 "end": { 6149 "line": 69, 6150 "column": 53 6151 } 6152 } 6153 }, 6154 "typeAnnotation": { 6155 "type": "TSTypeReference", 6156 "typeName": { 6157 "type": "Identifier", 6158 "name": "K", 6159 "loc": { 6160 "start": { 6161 "line": 69, 6162 "column": 54 6163 }, 6164 "end": { 6165 "line": 69, 6166 "column": 55 6167 } 6168 } 6169 }, 6170 "loc": { 6171 "start": { 6172 "line": 69, 6173 "column": 54 6174 }, 6175 "end": { 6176 "line": 69, 6177 "column": 55 6178 } 6179 } 6180 }, 6181 "loc": { 6182 "start": { 6183 "line": 69, 6184 "column": 52 6185 }, 6186 "end": { 6187 "line": 69, 6188 "column": 56 6189 } 6190 } 6191 }, 6192 { 6193 "type": "TSPropertySignature", 6194 "computed": false, 6195 "optional": false, 6196 "readonly": false, 6197 "key": { 6198 "type": "Identifier", 6199 "name": "b", 6200 "loc": { 6201 "start": { 6202 "line": 69, 6203 "column": 57 6204 }, 6205 "end": { 6206 "line": 69, 6207 "column": 58 6208 } 6209 } 6210 }, 6211 "typeAnnotation": { 6212 "type": "TSTypeReference", 6213 "typeName": { 6214 "type": "Identifier", 6215 "name": "Q", 6216 "loc": { 6217 "start": { 6218 "line": 69, 6219 "column": 59 6220 }, 6221 "end": { 6222 "line": 69, 6223 "column": 60 6224 } 6225 } 6226 }, 6227 "loc": { 6228 "start": { 6229 "line": 69, 6230 "column": 59 6231 }, 6232 "end": { 6233 "line": 69, 6234 "column": 60 6235 } 6236 } 6237 }, 6238 "loc": { 6239 "start": { 6240 "line": 69, 6241 "column": 57 6242 }, 6243 "end": { 6244 "line": 69, 6245 "column": 61 6246 } 6247 } 6248 } 6249 ], 6250 "loc": { 6251 "start": { 6252 "line": 69, 6253 "column": 51 6254 }, 6255 "end": { 6256 "line": 69, 6257 "column": 61 6258 } 6259 } 6260 }, 6261 "typeParameters": { 6262 "type": "TSTypeParameterDeclaration", 6263 "params": [ 6264 { 6265 "type": "TSTypeParameter", 6266 "name": { 6267 "type": "Identifier", 6268 "name": "K", 6269 "loc": { 6270 "start": { 6271 "line": 69, 6272 "column": 8 6273 }, 6274 "end": { 6275 "line": 69, 6276 "column": 9 6277 } 6278 } 6279 }, 6280 "in": false, 6281 "out": false, 6282 "loc": { 6283 "start": { 6284 "line": 69, 6285 "column": 8 6286 }, 6287 "end": { 6288 "line": 69, 6289 "column": 10 6290 } 6291 } 6292 }, 6293 { 6294 "type": "TSTypeParameter", 6295 "name": { 6296 "type": "Identifier", 6297 "name": "Q", 6298 "loc": { 6299 "start": { 6300 "line": 69, 6301 "column": 11 6302 }, 6303 "end": { 6304 "line": 69, 6305 "column": 12 6306 } 6307 } 6308 }, 6309 "default": { 6310 "type": "TSUnionType", 6311 "types": [ 6312 { 6313 "type": "TSTupleType", 6314 "elementTypes": [ 6315 { 6316 "type": "TSNumberKeyword", 6317 "loc": { 6318 "start": { 6319 "line": 69, 6320 "column": 16 6321 }, 6322 "end": { 6323 "line": 69, 6324 "column": 22 6325 } 6326 } 6327 }, 6328 { 6329 "type": "TSNumberKeyword", 6330 "loc": { 6331 "start": { 6332 "line": 69, 6333 "column": 24 6334 }, 6335 "end": { 6336 "line": 69, 6337 "column": 30 6338 } 6339 } 6340 }, 6341 { 6342 "type": "TSStringKeyword", 6343 "loc": { 6344 "start": { 6345 "line": 69, 6346 "column": 32 6347 }, 6348 "end": { 6349 "line": 69, 6350 "column": 38 6351 } 6352 } 6353 } 6354 ], 6355 "loc": { 6356 "start": { 6357 "line": 69, 6358 "column": 15 6359 }, 6360 "end": { 6361 "line": 69, 6362 "column": 39 6363 } 6364 } 6365 }, 6366 { 6367 "type": "TSArrayType", 6368 "elementType": { 6369 "type": "TSAnyKeyword", 6370 "loc": { 6371 "start": { 6372 "line": 69, 6373 "column": 42 6374 }, 6375 "end": { 6376 "line": 69, 6377 "column": 45 6378 } 6379 } 6380 }, 6381 "loc": { 6382 "start": { 6383 "line": 69, 6384 "column": 42 6385 }, 6386 "end": { 6387 "line": 69, 6388 "column": 47 6389 } 6390 } 6391 } 6392 ], 6393 "loc": { 6394 "start": { 6395 "line": 69, 6396 "column": 15 6397 }, 6398 "end": { 6399 "line": 69, 6400 "column": 47 6401 } 6402 } 6403 }, 6404 "in": false, 6405 "out": false, 6406 "loc": { 6407 "start": { 6408 "line": 69, 6409 "column": 11 6410 }, 6411 "end": { 6412 "line": 69, 6413 "column": 48 6414 } 6415 } 6416 } 6417 ], 6418 "loc": { 6419 "start": { 6420 "line": 69, 6421 "column": 7 6422 }, 6423 "end": { 6424 "line": 69, 6425 "column": 48 6426 } 6427 } 6428 }, 6429 "loc": { 6430 "start": { 6431 "line": 69, 6432 "column": 1 6433 }, 6434 "end": { 6435 "line": 69, 6436 "column": 62 6437 } 6438 } 6439 }, 6440 { 6441 "type": "ExpressionStatement", 6442 "expression": { 6443 "type": "CallExpression", 6444 "callee": { 6445 "type": "Identifier", 6446 "name": "async", 6447 "loc": { 6448 "start": { 6449 "line": 71, 6450 "column": 1 6451 }, 6452 "end": { 6453 "line": 71, 6454 "column": 6 6455 } 6456 } 6457 }, 6458 "arguments": [], 6459 "optional": false, 6460 "typeParameters": { 6461 "type": "TSTypeParameterInstantiation", 6462 "params": [ 6463 { 6464 "type": "TSFunctionType", 6465 "params": [], 6466 "typeParameters": { 6467 "type": "TSTypeParameterDeclaration", 6468 "params": [ 6469 { 6470 "type": "TSTypeParameter", 6471 "name": { 6472 "type": "Identifier", 6473 "name": "A", 6474 "loc": { 6475 "start": { 6476 "line": 71, 6477 "column": 8 6478 }, 6479 "end": { 6480 "line": 71, 6481 "column": 9 6482 } 6483 } 6484 }, 6485 "in": false, 6486 "out": false, 6487 "loc": { 6488 "start": { 6489 "line": 71, 6490 "column": 8 6491 }, 6492 "end": { 6493 "line": 71, 6494 "column": 10 6495 } 6496 } 6497 } 6498 ], 6499 "loc": { 6500 "start": { 6501 "line": 71, 6502 "column": 7 6503 }, 6504 "end": { 6505 "line": 71, 6506 "column": 10 6507 } 6508 } 6509 }, 6510 "returnType": { 6511 "type": "TSTypeLiteral", 6512 "members": [], 6513 "loc": { 6514 "start": { 6515 "line": 71, 6516 "column": 16 6517 }, 6518 "end": { 6519 "line": 71, 6520 "column": 18 6521 } 6522 } 6523 }, 6524 "loc": { 6525 "start": { 6526 "line": 71, 6527 "column": 7 6528 }, 6529 "end": { 6530 "line": 71, 6531 "column": 18 6532 } 6533 } 6534 } 6535 ], 6536 "loc": { 6537 "start": { 6538 "line": 71, 6539 "column": 6 6540 }, 6541 "end": { 6542 "line": 71, 6543 "column": 19 6544 } 6545 } 6546 }, 6547 "loc": { 6548 "start": { 6549 "line": 71, 6550 "column": 1 6551 }, 6552 "end": { 6553 "line": 71, 6554 "column": 21 6555 } 6556 } 6557 }, 6558 "loc": { 6559 "start": { 6560 "line": 71, 6561 "column": 1 6562 }, 6563 "end": { 6564 "line": 71, 6565 "column": 22 6566 } 6567 } 6568 }, 6569 { 6570 "type": "ExpressionStatement", 6571 "expression": { 6572 "type": "CallExpression", 6573 "callee": { 6574 "type": "Identifier", 6575 "name": "async", 6576 "loc": { 6577 "start": { 6578 "line": 72, 6579 "column": 1 6580 }, 6581 "end": { 6582 "line": 72, 6583 "column": 6 6584 } 6585 } 6586 }, 6587 "arguments": [], 6588 "optional": false, 6589 "typeParameters": { 6590 "type": "TSTypeParameterInstantiation", 6591 "params": [ 6592 { 6593 "type": "TSNumberKeyword", 6594 "loc": { 6595 "start": { 6596 "line": 72, 6597 "column": 7 6598 }, 6599 "end": { 6600 "line": 72, 6601 "column": 13 6602 } 6603 } 6604 } 6605 ], 6606 "loc": { 6607 "start": { 6608 "line": 72, 6609 "column": 6 6610 }, 6611 "end": { 6612 "line": 72, 6613 "column": 14 6614 } 6615 } 6616 }, 6617 "loc": { 6618 "start": { 6619 "line": 72, 6620 "column": 1 6621 }, 6622 "end": { 6623 "line": 72, 6624 "column": 16 6625 } 6626 } 6627 }, 6628 "loc": { 6629 "start": { 6630 "line": 72, 6631 "column": 1 6632 }, 6633 "end": { 6634 "line": 72, 6635 "column": 17 6636 } 6637 } 6638 }, 6639 { 6640 "type": "ExpressionStatement", 6641 "expression": { 6642 "type": "ArrowFunctionExpression", 6643 "function": { 6644 "type": "ScriptFunction", 6645 "id": null, 6646 "generator": false, 6647 "async": false, 6648 "expression": true, 6649 "params": [], 6650 "returnType": { 6651 "type": "TSNumberKeyword", 6652 "loc": { 6653 "start": { 6654 "line": 73, 6655 "column": 17 6656 }, 6657 "end": { 6658 "line": 73, 6659 "column": 23 6660 } 6661 } 6662 }, 6663 "typeParameters": { 6664 "type": "TSTypeParameterDeclaration", 6665 "params": [ 6666 { 6667 "type": "TSTypeParameter", 6668 "name": { 6669 "type": "Identifier", 6670 "name": "A", 6671 "loc": { 6672 "start": { 6673 "line": 73, 6674 "column": 2 6675 }, 6676 "end": { 6677 "line": 73, 6678 "column": 3 6679 } 6680 } 6681 }, 6682 "constraint": { 6683 "type": "TSTypeReference", 6684 "typeName": { 6685 "type": "Identifier", 6686 "name": "B", 6687 "loc": { 6688 "start": { 6689 "line": 73, 6690 "column": 12 6691 }, 6692 "end": { 6693 "line": 73, 6694 "column": 13 6695 } 6696 } 6697 }, 6698 "loc": { 6699 "start": { 6700 "line": 73, 6701 "column": 12 6702 }, 6703 "end": { 6704 "line": 73, 6705 "column": 13 6706 } 6707 } 6708 }, 6709 "in": false, 6710 "out": false, 6711 "loc": { 6712 "start": { 6713 "line": 73, 6714 "column": 2 6715 }, 6716 "end": { 6717 "line": 73, 6718 "column": 14 6719 } 6720 } 6721 } 6722 ], 6723 "loc": { 6724 "start": { 6725 "line": 73, 6726 "column": 1 6727 }, 6728 "end": { 6729 "line": 73, 6730 "column": 14 6731 } 6732 } 6733 }, 6734 "body": { 6735 "type": "BooleanLiteral", 6736 "value": true, 6737 "loc": { 6738 "start": { 6739 "line": 73, 6740 "column": 27 6741 }, 6742 "end": { 6743 "line": 73, 6744 "column": 31 6745 } 6746 } 6747 }, 6748 "loc": { 6749 "start": { 6750 "line": 73, 6751 "column": 1 6752 }, 6753 "end": { 6754 "line": 73, 6755 "column": 31 6756 } 6757 } 6758 }, 6759 "loc": { 6760 "start": { 6761 "line": 73, 6762 "column": 1 6763 }, 6764 "end": { 6765 "line": 73, 6766 "column": 31 6767 } 6768 } 6769 }, 6770 "loc": { 6771 "start": { 6772 "line": 73, 6773 "column": 1 6774 }, 6775 "end": { 6776 "line": 73, 6777 "column": 32 6778 } 6779 } 6780 }, 6781 { 6782 "type": "ExpressionStatement", 6783 "expression": { 6784 "type": "ArrowFunctionExpression", 6785 "function": { 6786 "type": "ScriptFunction", 6787 "id": null, 6788 "generator": false, 6789 "async": true, 6790 "expression": false, 6791 "params": [], 6792 "typeParameters": { 6793 "type": "TSTypeParameterDeclaration", 6794 "params": [ 6795 { 6796 "type": "TSTypeParameter", 6797 "name": { 6798 "type": "Identifier", 6799 "name": "A", 6800 "loc": { 6801 "start": { 6802 "line": 74, 6803 "column": 7 6804 }, 6805 "end": { 6806 "line": 74, 6807 "column": 8 6808 } 6809 } 6810 }, 6811 "constraint": { 6812 "type": "TSTypeOperator", 6813 "operator": "readonly", 6814 "typeAnnotation": { 6815 "type": "TSTupleType", 6816 "elementTypes": [ 6817 { 6818 "type": "TSNumberKeyword", 6819 "loc": { 6820 "start": { 6821 "line": 74, 6822 "column": 27 6823 }, 6824 "end": { 6825 "line": 74, 6826 "column": 33 6827 } 6828 } 6829 }, 6830 { 6831 "type": "TSStringKeyword", 6832 "loc": { 6833 "start": { 6834 "line": 74, 6835 "column": 35 6836 }, 6837 "end": { 6838 "line": 74, 6839 "column": 41 6840 } 6841 } 6842 } 6843 ], 6844 "loc": { 6845 "start": { 6846 "line": 74, 6847 "column": 26 6848 }, 6849 "end": { 6850 "line": 74, 6851 "column": 42 6852 } 6853 } 6854 }, 6855 "loc": { 6856 "start": { 6857 "line": 74, 6858 "column": 17 6859 }, 6860 "end": { 6861 "line": 74, 6862 "column": 42 6863 } 6864 } 6865 }, 6866 "in": false, 6867 "out": false, 6868 "loc": { 6869 "start": { 6870 "line": 74, 6871 "column": 7 6872 }, 6873 "end": { 6874 "line": 74, 6875 "column": 43 6876 } 6877 } 6878 } 6879 ], 6880 "loc": { 6881 "start": { 6882 "line": 74, 6883 "column": 6 6884 }, 6885 "end": { 6886 "line": 74, 6887 "column": 43 6888 } 6889 } 6890 }, 6891 "body": { 6892 "type": "BlockStatement", 6893 "statements": [ 6894 { 6895 "type": "ReturnStatement", 6896 "argument": { 6897 "type": "StringLiteral", 6898 "value": "foo", 6899 "loc": { 6900 "start": { 6901 "line": 74, 6902 "column": 57 6903 }, 6904 "end": { 6905 "line": 74, 6906 "column": 62 6907 } 6908 } 6909 }, 6910 "loc": { 6911 "start": { 6912 "line": 74, 6913 "column": 50 6914 }, 6915 "end": { 6916 "line": 74, 6917 "column": 63 6918 } 6919 } 6920 } 6921 ], 6922 "loc": { 6923 "start": { 6924 "line": 74, 6925 "column": 49 6926 }, 6927 "end": { 6928 "line": 74, 6929 "column": 64 6930 } 6931 } 6932 }, 6933 "loc": { 6934 "start": { 6935 "line": 74, 6936 "column": 1 6937 }, 6938 "end": { 6939 "line": 74, 6940 "column": 64 6941 } 6942 } 6943 }, 6944 "loc": { 6945 "start": { 6946 "line": 74, 6947 "column": 1 6948 }, 6949 "end": { 6950 "line": 74, 6951 "column": 64 6952 } 6953 } 6954 }, 6955 "loc": { 6956 "start": { 6957 "line": 74, 6958 "column": 1 6959 }, 6960 "end": { 6961 "line": 74, 6962 "column": 65 6963 } 6964 } 6965 } 6966 ], 6967 "loc": { 6968 "start": { 6969 "line": 1, 6970 "column": 1 6971 }, 6972 "end": { 6973 "line": 74, 6974 "column": 65 6975 } 6976 } 6977} 6978