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