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": 75 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": 83 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": 31 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": 39 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": "o", 1822 "decorators": [], 1823 "loc": { 1824 "start": { 1825 "line": 36, 1826 "column": 5 1827 }, 1828 "end": { 1829 "line": 36, 1830 "column": 6 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": 7 1848 }, 1849 "end": { 1850 "line": 36, 1851 "column": 8 1852 } 1853 } 1854 }, 1855 "constraint": { 1856 "type": "TSNumberKeyword", 1857 "loc": { 1858 "start": { 1859 "line": 36, 1860 "column": 17 1861 }, 1862 "end": { 1863 "line": 36, 1864 "column": 23 1865 } 1866 } 1867 }, 1868 "loc": { 1869 "start": { 1870 "line": 36, 1871 "column": 7 1872 }, 1873 "end": { 1874 "line": 36, 1875 "column": 24 1876 } 1877 } 1878 } 1879 ], 1880 "loc": { 1881 "start": { 1882 "line": 36, 1883 "column": 6 1884 }, 1885 "end": { 1886 "line": 36, 1887 "column": 24 1888 } 1889 } 1890 }, 1891 "typeAnnotation": { 1892 "type": "TSTupleType", 1893 "elementTypes": [ 1894 { 1895 "type": "TSBooleanKeyword", 1896 "loc": { 1897 "start": { 1898 "line": 36, 1899 "column": 29 1900 }, 1901 "end": { 1902 "line": 36, 1903 "column": 37 1904 } 1905 } 1906 }, 1907 { 1908 "type": "TSArrayType", 1909 "elementType": { 1910 "type": "TSNumberKeyword", 1911 "loc": { 1912 "start": { 1913 "line": 36, 1914 "column": 38 1915 }, 1916 "end": { 1917 "line": 36, 1918 "column": 44 1919 } 1920 } 1921 }, 1922 "loc": { 1923 "start": { 1924 "line": 36, 1925 "column": 38 1926 }, 1927 "end": { 1928 "line": 36, 1929 "column": 47 1930 } 1931 } 1932 } 1933 ], 1934 "loc": { 1935 "start": { 1936 "line": 36, 1937 "column": 28 1938 }, 1939 "end": { 1940 "line": 36, 1941 "column": 47 1942 } 1943 } 1944 }, 1945 "loc": { 1946 "start": { 1947 "line": 36, 1948 "column": 5 1949 }, 1950 "end": { 1951 "line": 36, 1952 "column": 48 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": 107 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": 115 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": 98 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": 40 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": 48 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": 74 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": 26 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": 29 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": 32 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": 51, 3522 "column": 2 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 "loc": { 3904 "start": { 3905 "line": 48, 3906 "column": 52 3907 }, 3908 "end": { 3909 "line": 51, 3910 "column": 2 3911 } 3912 } 3913 }, 3914 "loc": { 3915 "start": { 3916 "line": 48, 3917 "column": 1 3918 }, 3919 "end": { 3920 "line": 51, 3921 "column": 2 3922 } 3923 } 3924 }, 3925 { 3926 "type": "ClassDeclaration", 3927 "definition": { 3928 "id": { 3929 "type": "Identifier", 3930 "name": "W", 3931 "decorators": [], 3932 "loc": { 3933 "start": { 3934 "line": 53, 3935 "column": 7 3936 }, 3937 "end": { 3938 "line": 53, 3939 "column": 8 3940 } 3941 } 3942 }, 3943 "superClass": { 3944 "type": "Identifier", 3945 "name": "T", 3946 "decorators": [], 3947 "loc": { 3948 "start": { 3949 "line": 53, 3950 "column": 17 3951 }, 3952 "end": { 3953 "line": 53, 3954 "column": 18 3955 } 3956 } 3957 }, 3958 "superTypeParameters": { 3959 "type": "TSTypeParameterInstantiation", 3960 "params": [ 3961 { 3962 "type": "TSFunctionType", 3963 "params": [], 3964 "typeParameters": { 3965 "type": "TSTypeParameterDeclaration", 3966 "params": [ 3967 { 3968 "type": "TSTypeParameter", 3969 "name": { 3970 "type": "Identifier", 3971 "name": "B", 3972 "decorators": [], 3973 "loc": { 3974 "start": { 3975 "line": 53, 3976 "column": 20 3977 }, 3978 "end": { 3979 "line": 53, 3980 "column": 21 3981 } 3982 } 3983 }, 3984 "loc": { 3985 "start": { 3986 "line": 53, 3987 "column": 20 3988 }, 3989 "end": { 3990 "line": 53, 3991 "column": 22 3992 } 3993 } 3994 } 3995 ], 3996 "loc": { 3997 "start": { 3998 "line": 53, 3999 "column": 19 4000 }, 4001 "end": { 4002 "line": 53, 4003 "column": 22 4004 } 4005 } 4006 }, 4007 "returnType": { 4008 "type": "TSNumberKeyword", 4009 "loc": { 4010 "start": { 4011 "line": 53, 4012 "column": 29 4013 }, 4014 "end": { 4015 "line": 53, 4016 "column": 35 4017 } 4018 } 4019 }, 4020 "loc": { 4021 "start": { 4022 "line": 53, 4023 "column": 19 4024 }, 4025 "end": { 4026 "line": 53, 4027 "column": 35 4028 } 4029 } 4030 }, 4031 { 4032 "type": "TSArrayType", 4033 "elementType": { 4034 "type": "TSTupleType", 4035 "elementTypes": [ 4036 { 4037 "type": "TSUnionType", 4038 "types": [ 4039 { 4040 "type": "TSNumberKeyword", 4041 "loc": { 4042 "start": { 4043 "line": 53, 4044 "column": 38 4045 }, 4046 "end": { 4047 "line": 53, 4048 "column": 44 4049 } 4050 } 4051 }, 4052 { 4053 "type": "TSStringKeyword", 4054 "loc": { 4055 "start": { 4056 "line": 53, 4057 "column": 47 4058 }, 4059 "end": { 4060 "line": 53, 4061 "column": 53 4062 } 4063 } 4064 } 4065 ], 4066 "loc": { 4067 "start": { 4068 "line": 53, 4069 "column": 38 4070 }, 4071 "end": { 4072 "line": 53, 4073 "column": 54 4074 } 4075 } 4076 } 4077 ], 4078 "loc": { 4079 "start": { 4080 "line": 53, 4081 "column": 37 4082 }, 4083 "end": { 4084 "line": 53, 4085 "column": 54 4086 } 4087 } 4088 }, 4089 "loc": { 4090 "start": { 4091 "line": 53, 4092 "column": 37 4093 }, 4094 "end": { 4095 "line": 53, 4096 "column": 56 4097 } 4098 } 4099 } 4100 ], 4101 "loc": { 4102 "start": { 4103 "line": 53, 4104 "column": 18 4105 }, 4106 "end": { 4107 "line": 53, 4108 "column": 57 4109 } 4110 } 4111 }, 4112 "implements": [], 4113 "constructor": { 4114 "type": "MethodDefinition", 4115 "key": { 4116 "type": "Identifier", 4117 "name": "constructor", 4118 "decorators": [], 4119 "loc": { 4120 "start": { 4121 "line": 1, 4122 "column": 1 4123 }, 4124 "end": { 4125 "line": 1, 4126 "column": 1 4127 } 4128 } 4129 }, 4130 "kind": "constructor", 4131 "static": false, 4132 "optional": false, 4133 "computed": false, 4134 "value": { 4135 "type": "FunctionExpression", 4136 "function": { 4137 "type": "ScriptFunction", 4138 "id": null, 4139 "generator": false, 4140 "async": false, 4141 "expression": false, 4142 "params": [ 4143 { 4144 "type": "RestElement", 4145 "argument": { 4146 "type": "Identifier", 4147 "name": "args", 4148 "decorators": [], 4149 "loc": { 4150 "start": { 4151 "line": 1, 4152 "column": 1 4153 }, 4154 "end": { 4155 "line": 1, 4156 "column": 1 4157 } 4158 } 4159 }, 4160 "loc": { 4161 "start": { 4162 "line": 1, 4163 "column": 1 4164 }, 4165 "end": { 4166 "line": 1, 4167 "column": 1 4168 } 4169 } 4170 } 4171 ], 4172 "body": { 4173 "type": "BlockStatement", 4174 "statements": [ 4175 { 4176 "type": "ExpressionStatement", 4177 "expression": { 4178 "type": "CallExpression", 4179 "callee": { 4180 "type": "Super", 4181 "loc": { 4182 "start": { 4183 "line": 1, 4184 "column": 1 4185 }, 4186 "end": { 4187 "line": 1, 4188 "column": 1 4189 } 4190 } 4191 }, 4192 "arguments": [ 4193 { 4194 "type": "SpreadElement", 4195 "argument": { 4196 "type": "Identifier", 4197 "name": "args", 4198 "decorators": [], 4199 "loc": { 4200 "start": { 4201 "line": 1, 4202 "column": 1 4203 }, 4204 "end": { 4205 "line": 1, 4206 "column": 1 4207 } 4208 } 4209 }, 4210 "loc": { 4211 "start": { 4212 "line": 1, 4213 "column": 1 4214 }, 4215 "end": { 4216 "line": 1, 4217 "column": 1 4218 } 4219 } 4220 } 4221 ], 4222 "optional": false, 4223 "loc": { 4224 "start": { 4225 "line": 1, 4226 "column": 1 4227 }, 4228 "end": { 4229 "line": 1, 4230 "column": 1 4231 } 4232 } 4233 }, 4234 "loc": { 4235 "start": { 4236 "line": 1, 4237 "column": 1 4238 }, 4239 "end": { 4240 "line": 1, 4241 "column": 1 4242 } 4243 } 4244 } 4245 ], 4246 "loc": { 4247 "start": { 4248 "line": 1, 4249 "column": 1 4250 }, 4251 "end": { 4252 "line": 1, 4253 "column": 1 4254 } 4255 } 4256 }, 4257 "loc": { 4258 "start": { 4259 "line": 1, 4260 "column": 1 4261 }, 4262 "end": { 4263 "line": 1, 4264 "column": 1 4265 } 4266 } 4267 }, 4268 "loc": { 4269 "start": { 4270 "line": 1, 4271 "column": 1 4272 }, 4273 "end": { 4274 "line": 1, 4275 "column": 1 4276 } 4277 } 4278 }, 4279 "overloads": [], 4280 "decorators": [], 4281 "loc": { 4282 "start": { 4283 "line": 55, 4284 "column": 2 4285 }, 4286 "end": { 4287 "line": 55, 4288 "column": 2 4289 } 4290 } 4291 }, 4292 "body": [], 4293 "loc": { 4294 "start": { 4295 "line": 53, 4296 "column": 58 4297 }, 4298 "end": { 4299 "line": 55, 4300 "column": 2 4301 } 4302 } 4303 }, 4304 "loc": { 4305 "start": { 4306 "line": 53, 4307 "column": 1 4308 }, 4309 "end": { 4310 "line": 55, 4311 "column": 2 4312 } 4313 } 4314 }, 4315 { 4316 "type": "ClassDeclaration", 4317 "definition": { 4318 "id": { 4319 "type": "Identifier", 4320 "name": "X", 4321 "decorators": [], 4322 "loc": { 4323 "start": { 4324 "line": 57, 4325 "column": 7 4326 }, 4327 "end": { 4328 "line": 57, 4329 "column": 8 4330 } 4331 } 4332 }, 4333 "superClass": { 4334 "type": "Identifier", 4335 "name": "Q", 4336 "decorators": [], 4337 "loc": { 4338 "start": { 4339 "line": 57, 4340 "column": 17 4341 }, 4342 "end": { 4343 "line": 57, 4344 "column": 18 4345 } 4346 } 4347 }, 4348 "superTypeParameters": { 4349 "type": "TSTypeParameterInstantiation", 4350 "params": [ 4351 { 4352 "type": "TSNumberKeyword", 4353 "loc": { 4354 "start": { 4355 "line": 57, 4356 "column": 19 4357 }, 4358 "end": { 4359 "line": 57, 4360 "column": 25 4361 } 4362 } 4363 } 4364 ], 4365 "loc": { 4366 "start": { 4367 "line": 57, 4368 "column": 18 4369 }, 4370 "end": { 4371 "line": 57, 4372 "column": 26 4373 } 4374 } 4375 }, 4376 "implements": [ 4377 { 4378 "type": "TSClassImplements", 4379 "expression": { 4380 "type": "Identifier", 4381 "name": "S", 4382 "decorators": [], 4383 "loc": { 4384 "start": { 4385 "line": 57, 4386 "column": 38 4387 }, 4388 "end": { 4389 "line": 57, 4390 "column": 39 4391 } 4392 } 4393 }, 4394 "typeParameters": { 4395 "type": "TSTypeParameterInstantiation", 4396 "params": [ 4397 { 4398 "type": "TSFunctionType", 4399 "params": [ 4400 { 4401 "type": "Identifier", 4402 "name": "a", 4403 "typeAnnotation": { 4404 "type": "TSNumberKeyword", 4405 "loc": { 4406 "start": { 4407 "line": 57, 4408 "column": 46 4409 }, 4410 "end": { 4411 "line": 57, 4412 "column": 52 4413 } 4414 } 4415 }, 4416 "decorators": [], 4417 "loc": { 4418 "start": { 4419 "line": 57, 4420 "column": 44 4421 }, 4422 "end": { 4423 "line": 57, 4424 "column": 45 4425 } 4426 } 4427 }, 4428 { 4429 "type": "Identifier", 4430 "name": "b", 4431 "typeAnnotation": { 4432 "type": "TSStringKeyword", 4433 "loc": { 4434 "start": { 4435 "line": 57, 4436 "column": 56 4437 }, 4438 "end": { 4439 "line": 57, 4440 "column": 62 4441 } 4442 } 4443 }, 4444 "decorators": [], 4445 "loc": { 4446 "start": { 4447 "line": 57, 4448 "column": 54 4449 }, 4450 "end": { 4451 "line": 57, 4452 "column": 55 4453 } 4454 } 4455 } 4456 ], 4457 "typeParameters": { 4458 "type": "TSTypeParameterDeclaration", 4459 "params": [ 4460 { 4461 "type": "TSTypeParameter", 4462 "name": { 4463 "type": "Identifier", 4464 "name": "R", 4465 "decorators": [], 4466 "loc": { 4467 "start": { 4468 "line": 57, 4469 "column": 41 4470 }, 4471 "end": { 4472 "line": 57, 4473 "column": 42 4474 } 4475 } 4476 }, 4477 "loc": { 4478 "start": { 4479 "line": 57, 4480 "column": 41 4481 }, 4482 "end": { 4483 "line": 57, 4484 "column": 43 4485 } 4486 } 4487 } 4488 ], 4489 "loc": { 4490 "start": { 4491 "line": 57, 4492 "column": 40 4493 }, 4494 "end": { 4495 "line": 57, 4496 "column": 43 4497 } 4498 } 4499 }, 4500 "returnType": { 4501 "type": "TSTupleType", 4502 "elementTypes": [ 4503 { 4504 "type": "TSNumberKeyword", 4505 "loc": { 4506 "start": { 4507 "line": 57, 4508 "column": 68 4509 }, 4510 "end": { 4511 "line": 57, 4512 "column": 75 4513 } 4514 } 4515 } 4516 ], 4517 "loc": { 4518 "start": { 4519 "line": 57, 4520 "column": 67 4521 }, 4522 "end": { 4523 "line": 57, 4524 "column": 75 4525 } 4526 } 4527 }, 4528 "loc": { 4529 "start": { 4530 "line": 57, 4531 "column": 40 4532 }, 4533 "end": { 4534 "line": 57, 4535 "column": 75 4536 } 4537 } 4538 } 4539 ], 4540 "loc": { 4541 "start": { 4542 "line": 57, 4543 "column": 39 4544 }, 4545 "end": { 4546 "line": 57, 4547 "column": 76 4548 } 4549 } 4550 }, 4551 "loc": { 4552 "start": { 4553 "line": 57, 4554 "column": 38 4555 }, 4556 "end": { 4557 "line": 57, 4558 "column": 77 4559 } 4560 } 4561 }, 4562 { 4563 "type": "TSClassImplements", 4564 "expression": { 4565 "type": "Identifier", 4566 "name": "A", 4567 "decorators": [], 4568 "loc": { 4569 "start": { 4570 "line": 57, 4571 "column": 78 4572 }, 4573 "end": { 4574 "line": 57, 4575 "column": 79 4576 } 4577 } 4578 }, 4579 "loc": { 4580 "start": { 4581 "line": 57, 4582 "column": 78 4583 }, 4584 "end": { 4585 "line": 57, 4586 "column": 81 4587 } 4588 } 4589 } 4590 ], 4591 "constructor": { 4592 "type": "MethodDefinition", 4593 "key": { 4594 "type": "Identifier", 4595 "name": "constructor", 4596 "decorators": [], 4597 "loc": { 4598 "start": { 4599 "line": 1, 4600 "column": 1 4601 }, 4602 "end": { 4603 "line": 1, 4604 "column": 1 4605 } 4606 } 4607 }, 4608 "kind": "constructor", 4609 "static": false, 4610 "optional": false, 4611 "computed": false, 4612 "value": { 4613 "type": "FunctionExpression", 4614 "function": { 4615 "type": "ScriptFunction", 4616 "id": null, 4617 "generator": false, 4618 "async": false, 4619 "expression": false, 4620 "params": [ 4621 { 4622 "type": "RestElement", 4623 "argument": { 4624 "type": "Identifier", 4625 "name": "args", 4626 "decorators": [], 4627 "loc": { 4628 "start": { 4629 "line": 1, 4630 "column": 1 4631 }, 4632 "end": { 4633 "line": 1, 4634 "column": 1 4635 } 4636 } 4637 }, 4638 "loc": { 4639 "start": { 4640 "line": 1, 4641 "column": 1 4642 }, 4643 "end": { 4644 "line": 1, 4645 "column": 1 4646 } 4647 } 4648 } 4649 ], 4650 "body": { 4651 "type": "BlockStatement", 4652 "statements": [ 4653 { 4654 "type": "ExpressionStatement", 4655 "expression": { 4656 "type": "CallExpression", 4657 "callee": { 4658 "type": "Super", 4659 "loc": { 4660 "start": { 4661 "line": 1, 4662 "column": 1 4663 }, 4664 "end": { 4665 "line": 1, 4666 "column": 1 4667 } 4668 } 4669 }, 4670 "arguments": [ 4671 { 4672 "type": "SpreadElement", 4673 "argument": { 4674 "type": "Identifier", 4675 "name": "args", 4676 "decorators": [], 4677 "loc": { 4678 "start": { 4679 "line": 1, 4680 "column": 1 4681 }, 4682 "end": { 4683 "line": 1, 4684 "column": 1 4685 } 4686 } 4687 }, 4688 "loc": { 4689 "start": { 4690 "line": 1, 4691 "column": 1 4692 }, 4693 "end": { 4694 "line": 1, 4695 "column": 1 4696 } 4697 } 4698 } 4699 ], 4700 "optional": false, 4701 "loc": { 4702 "start": { 4703 "line": 1, 4704 "column": 1 4705 }, 4706 "end": { 4707 "line": 1, 4708 "column": 1 4709 } 4710 } 4711 }, 4712 "loc": { 4713 "start": { 4714 "line": 1, 4715 "column": 1 4716 }, 4717 "end": { 4718 "line": 1, 4719 "column": 1 4720 } 4721 } 4722 } 4723 ], 4724 "loc": { 4725 "start": { 4726 "line": 1, 4727 "column": 1 4728 }, 4729 "end": { 4730 "line": 1, 4731 "column": 1 4732 } 4733 } 4734 }, 4735 "loc": { 4736 "start": { 4737 "line": 1, 4738 "column": 1 4739 }, 4740 "end": { 4741 "line": 1, 4742 "column": 1 4743 } 4744 } 4745 }, 4746 "loc": { 4747 "start": { 4748 "line": 1, 4749 "column": 1 4750 }, 4751 "end": { 4752 "line": 1, 4753 "column": 1 4754 } 4755 } 4756 }, 4757 "overloads": [], 4758 "decorators": [], 4759 "loc": { 4760 "start": { 4761 "line": 59, 4762 "column": 2 4763 }, 4764 "end": { 4765 "line": 59, 4766 "column": 2 4767 } 4768 } 4769 }, 4770 "body": [], 4771 "loc": { 4772 "start": { 4773 "line": 57, 4774 "column": 80 4775 }, 4776 "end": { 4777 "line": 59, 4778 "column": 2 4779 } 4780 } 4781 }, 4782 "loc": { 4783 "start": { 4784 "line": 57, 4785 "column": 1 4786 }, 4787 "end": { 4788 "line": 59, 4789 "column": 2 4790 } 4791 } 4792 }, 4793 { 4794 "type": "VariableDeclaration", 4795 "declarations": [ 4796 { 4797 "type": "VariableDeclarator", 4798 "id": { 4799 "type": "Identifier", 4800 "name": "a", 4801 "typeAnnotation": { 4802 "type": "TSConstructorType", 4803 "params": [], 4804 "typeParameters": { 4805 "type": "TSTypeParameterDeclaration", 4806 "params": [ 4807 { 4808 "type": "TSTypeParameter", 4809 "name": { 4810 "type": "Identifier", 4811 "name": "A", 4812 "decorators": [], 4813 "loc": { 4814 "start": { 4815 "line": 61, 4816 "column": 13 4817 }, 4818 "end": { 4819 "line": 61, 4820 "column": 14 4821 } 4822 } 4823 }, 4824 "loc": { 4825 "start": { 4826 "line": 61, 4827 "column": 13 4828 }, 4829 "end": { 4830 "line": 61, 4831 "column": 15 4832 } 4833 } 4834 } 4835 ], 4836 "loc": { 4837 "start": { 4838 "line": 61, 4839 "column": 12 4840 }, 4841 "end": { 4842 "line": 61, 4843 "column": 15 4844 } 4845 } 4846 }, 4847 "returnType": { 4848 "type": "TSFunctionType", 4849 "params": [], 4850 "typeParameters": { 4851 "type": "TSTypeParameterDeclaration", 4852 "params": [ 4853 { 4854 "type": "TSTypeParameter", 4855 "name": { 4856 "type": "Identifier", 4857 "name": "B", 4858 "decorators": [], 4859 "loc": { 4860 "start": { 4861 "line": 61, 4862 "column": 22 4863 }, 4864 "end": { 4865 "line": 61, 4866 "column": 23 4867 } 4868 } 4869 }, 4870 "loc": { 4871 "start": { 4872 "line": 61, 4873 "column": 22 4874 }, 4875 "end": { 4876 "line": 61, 4877 "column": 24 4878 } 4879 } 4880 } 4881 ], 4882 "loc": { 4883 "start": { 4884 "line": 61, 4885 "column": 21 4886 }, 4887 "end": { 4888 "line": 61, 4889 "column": 24 4890 } 4891 } 4892 }, 4893 "returnType": { 4894 "type": "TSStringKeyword", 4895 "loc": { 4896 "start": { 4897 "line": 61, 4898 "column": 30 4899 }, 4900 "end": { 4901 "line": 61, 4902 "column": 36 4903 } 4904 } 4905 }, 4906 "loc": { 4907 "start": { 4908 "line": 61, 4909 "column": 21 4910 }, 4911 "end": { 4912 "line": 61, 4913 "column": 36 4914 } 4915 } 4916 }, 4917 "loc": { 4918 "start": { 4919 "line": 61, 4920 "column": 8 4921 }, 4922 "end": { 4923 "line": 61, 4924 "column": 36 4925 } 4926 } 4927 }, 4928 "decorators": [], 4929 "loc": { 4930 "start": { 4931 "line": 61, 4932 "column": 5 4933 }, 4934 "end": { 4935 "line": 61, 4936 "column": 6 4937 } 4938 } 4939 }, 4940 "init": null, 4941 "loc": { 4942 "start": { 4943 "line": 61, 4944 "column": 5 4945 }, 4946 "end": { 4947 "line": 61, 4948 "column": 6 4949 } 4950 } 4951 } 4952 ], 4953 "kind": "var", 4954 "loc": { 4955 "start": { 4956 "line": 61, 4957 "column": 1 4958 }, 4959 "end": { 4960 "line": 61, 4961 "column": 37 4962 } 4963 } 4964 }, 4965 { 4966 "type": "VariableDeclaration", 4967 "declarations": [ 4968 { 4969 "type": "VariableDeclarator", 4970 "id": { 4971 "type": "Identifier", 4972 "name": "b", 4973 "typeAnnotation": { 4974 "type": "TSFunctionType", 4975 "params": [ 4976 { 4977 "type": "Identifier", 4978 "name": "a", 4979 "typeAnnotation": { 4980 "type": "TSUnionType", 4981 "types": [ 4982 { 4983 "type": "TSNumberKeyword", 4984 "loc": { 4985 "start": { 4986 "line": 62, 4987 "column": 32 4988 }, 4989 "end": { 4990 "line": 62, 4991 "column": 38 4992 } 4993 } 4994 }, 4995 { 4996 "type": "TSStringKeyword", 4997 "loc": { 4998 "start": { 4999 "line": 62, 5000 "column": 41 5001 }, 5002 "end": { 5003 "line": 62, 5004 "column": 47 5005 } 5006 } 5007 } 5008 ], 5009 "loc": { 5010 "start": { 5011 "line": 62, 5012 "column": 32 5013 }, 5014 "end": { 5015 "line": 62, 5016 "column": 47 5017 } 5018 } 5019 }, 5020 "decorators": [], 5021 "loc": { 5022 "start": { 5023 "line": 62, 5024 "column": 29 5025 }, 5026 "end": { 5027 "line": 62, 5028 "column": 30 5029 } 5030 } 5031 } 5032 ], 5033 "typeParameters": { 5034 "type": "TSTypeParameterDeclaration", 5035 "params": [ 5036 { 5037 "type": "TSTypeParameter", 5038 "name": { 5039 "type": "Identifier", 5040 "name": "A", 5041 "decorators": [], 5042 "loc": { 5043 "start": { 5044 "line": 62, 5045 "column": 9 5046 }, 5047 "end": { 5048 "line": 62, 5049 "column": 10 5050 } 5051 } 5052 }, 5053 "constraint": { 5054 "type": "TSTypeReference", 5055 "typeName": { 5056 "type": "Identifier", 5057 "name": "T", 5058 "decorators": [], 5059 "loc": { 5060 "start": { 5061 "line": 62, 5062 "column": 19 5063 }, 5064 "end": { 5065 "line": 62, 5066 "column": 20 5067 } 5068 } 5069 }, 5070 "loc": { 5071 "start": { 5072 "line": 62, 5073 "column": 19 5074 }, 5075 "end": { 5076 "line": 62, 5077 "column": 20 5078 } 5079 } 5080 }, 5081 "loc": { 5082 "start": { 5083 "line": 62, 5084 "column": 9 5085 }, 5086 "end": { 5087 "line": 62, 5088 "column": 21 5089 } 5090 } 5091 }, 5092 { 5093 "type": "TSTypeParameter", 5094 "name": { 5095 "type": "Identifier", 5096 "name": "U", 5097 "decorators": [], 5098 "loc": { 5099 "start": { 5100 "line": 62, 5101 "column": 22 5102 }, 5103 "end": { 5104 "line": 62, 5105 "column": 23 5106 } 5107 } 5108 }, 5109 "default": { 5110 "type": "TSLiteralType", 5111 "literal": { 5112 "type": "NumberLiteral", 5113 "value": 5, 5114 "loc": { 5115 "start": { 5116 "line": 62, 5117 "column": 26 5118 }, 5119 "end": { 5120 "line": 62, 5121 "column": 27 5122 } 5123 } 5124 }, 5125 "loc": { 5126 "start": { 5127 "line": 62, 5128 "column": 26 5129 }, 5130 "end": { 5131 "line": 62, 5132 "column": 27 5133 } 5134 } 5135 }, 5136 "loc": { 5137 "start": { 5138 "line": 62, 5139 "column": 22 5140 }, 5141 "end": { 5142 "line": 62, 5143 "column": 28 5144 } 5145 } 5146 } 5147 ], 5148 "loc": { 5149 "start": { 5150 "line": 62, 5151 "column": 8 5152 }, 5153 "end": { 5154 "line": 62, 5155 "column": 28 5156 } 5157 } 5158 }, 5159 "returnType": { 5160 "type": "TSTypeLiteral", 5161 "members": [ 5162 { 5163 "type": "TSPropertySignature", 5164 "computed": false, 5165 "optional": false, 5166 "readonly": false, 5167 "key": { 5168 "type": "Identifier", 5169 "name": "a", 5170 "decorators": [], 5171 "loc": { 5172 "start": { 5173 "line": 62, 5174 "column": 54 5175 }, 5176 "end": { 5177 "line": 62, 5178 "column": 55 5179 } 5180 } 5181 }, 5182 "typeAnnotation": { 5183 "type": "TSNumberKeyword", 5184 "loc": { 5185 "start": { 5186 "line": 62, 5187 "column": 57 5188 }, 5189 "end": { 5190 "line": 62, 5191 "column": 63 5192 } 5193 } 5194 }, 5195 "loc": { 5196 "start": { 5197 "line": 62, 5198 "column": 54 5199 }, 5200 "end": { 5201 "line": 62, 5202 "column": 65 5203 } 5204 } 5205 } 5206 ], 5207 "loc": { 5208 "start": { 5209 "line": 62, 5210 "column": 52 5211 }, 5212 "end": { 5213 "line": 62, 5214 "column": 65 5215 } 5216 } 5217 }, 5218 "loc": { 5219 "start": { 5220 "line": 62, 5221 "column": 8 5222 }, 5223 "end": { 5224 "line": 62, 5225 "column": 65 5226 } 5227 } 5228 }, 5229 "decorators": [], 5230 "loc": { 5231 "start": { 5232 "line": 62, 5233 "column": 5 5234 }, 5235 "end": { 5236 "line": 62, 5237 "column": 6 5238 } 5239 } 5240 }, 5241 "init": null, 5242 "loc": { 5243 "start": { 5244 "line": 62, 5245 "column": 5 5246 }, 5247 "end": { 5248 "line": 62, 5249 "column": 6 5250 } 5251 } 5252 } 5253 ], 5254 "kind": "var", 5255 "loc": { 5256 "start": { 5257 "line": 62, 5258 "column": 1 5259 }, 5260 "end": { 5261 "line": 62, 5262 "column": 66 5263 } 5264 } 5265 }, 5266 { 5267 "type": "VariableDeclaration", 5268 "declarations": [ 5269 { 5270 "type": "VariableDeclarator", 5271 "id": { 5272 "type": "Identifier", 5273 "name": "c", 5274 "typeAnnotation": { 5275 "type": "TSIndexedAccessType", 5276 "objectType": { 5277 "type": "TSTypeReference", 5278 "typeName": { 5279 "type": "TSQualifiedName", 5280 "left": { 5281 "type": "Identifier", 5282 "name": "B", 5283 "decorators": [], 5284 "loc": { 5285 "start": { 5286 "line": 64, 5287 "column": 8 5288 }, 5289 "end": { 5290 "line": 64, 5291 "column": 9 5292 } 5293 } 5294 }, 5295 "right": { 5296 "type": "Identifier", 5297 "name": "T", 5298 "decorators": [], 5299 "loc": { 5300 "start": { 5301 "line": 64, 5302 "column": 10 5303 }, 5304 "end": { 5305 "line": 64, 5306 "column": 11 5307 } 5308 } 5309 }, 5310 "loc": { 5311 "start": { 5312 "line": 64, 5313 "column": 8 5314 }, 5315 "end": { 5316 "line": 64, 5317 "column": 12 5318 } 5319 } 5320 }, 5321 "typeParameters": { 5322 "type": "TSTypeParameterInstantiation", 5323 "params": [ 5324 { 5325 "type": "TSTypeReference", 5326 "typeName": { 5327 "type": "Identifier", 5328 "name": "A", 5329 "decorators": [], 5330 "loc": { 5331 "start": { 5332 "line": 64, 5333 "column": 12 5334 }, 5335 "end": { 5336 "line": 64, 5337 "column": 13 5338 } 5339 } 5340 }, 5341 "typeParameters": { 5342 "type": "TSTypeParameterInstantiation", 5343 "params": [ 5344 { 5345 "type": "TSTypeReference", 5346 "typeName": { 5347 "type": "Identifier", 5348 "name": "C", 5349 "decorators": [], 5350 "loc": { 5351 "start": { 5352 "line": 64, 5353 "column": 14 5354 }, 5355 "end": { 5356 "line": 64, 5357 "column": 15 5358 } 5359 } 5360 }, 5361 "typeParameters": { 5362 "type": "TSTypeParameterInstantiation", 5363 "params": [ 5364 { 5365 "type": "TSNumberKeyword", 5366 "loc": { 5367 "start": { 5368 "line": 64, 5369 "column": 16 5370 }, 5371 "end": { 5372 "line": 64, 5373 "column": 22 5374 } 5375 } 5376 } 5377 ], 5378 "loc": { 5379 "start": { 5380 "line": 64, 5381 "column": 14 5382 }, 5383 "end": { 5384 "line": 64, 5385 "column": 25 5386 } 5387 } 5388 }, 5389 "loc": { 5390 "start": { 5391 "line": 64, 5392 "column": 14 5393 }, 5394 "end": { 5395 "line": 64, 5396 "column": 15 5397 } 5398 } 5399 } 5400 ], 5401 "loc": { 5402 "start": { 5403 "line": 64, 5404 "column": 12 5405 }, 5406 "end": { 5407 "line": 64, 5408 "column": 25 5409 } 5410 } 5411 }, 5412 "loc": { 5413 "start": { 5414 "line": 64, 5415 "column": 12 5416 }, 5417 "end": { 5418 "line": 64, 5419 "column": 13 5420 } 5421 } 5422 } 5423 ], 5424 "loc": { 5425 "start": { 5426 "line": 64, 5427 "column": 11 5428 }, 5429 "end": { 5430 "line": 64, 5431 "column": 25 5432 } 5433 } 5434 }, 5435 "loc": { 5436 "start": { 5437 "line": 64, 5438 "column": 8 5439 }, 5440 "end": { 5441 "line": 64, 5442 "column": 26 5443 } 5444 } 5445 }, 5446 "indexType": { 5447 "type": "TSLiteralType", 5448 "literal": { 5449 "type": "NumberLiteral", 5450 "value": 0, 5451 "loc": { 5452 "start": { 5453 "line": 64, 5454 "column": 26 5455 }, 5456 "end": { 5457 "line": 64, 5458 "column": 27 5459 } 5460 } 5461 }, 5462 "loc": { 5463 "start": { 5464 "line": 64, 5465 "column": 26 5466 }, 5467 "end": { 5468 "line": 64, 5469 "column": 27 5470 } 5471 } 5472 }, 5473 "loc": { 5474 "start": { 5475 "line": 64, 5476 "column": 8 5477 }, 5478 "end": { 5479 "line": 64, 5480 "column": 29 5481 } 5482 } 5483 }, 5484 "decorators": [], 5485 "loc": { 5486 "start": { 5487 "line": 64, 5488 "column": 5 5489 }, 5490 "end": { 5491 "line": 64, 5492 "column": 6 5493 } 5494 } 5495 }, 5496 "init": null, 5497 "loc": { 5498 "start": { 5499 "line": 64, 5500 "column": 5 5501 }, 5502 "end": { 5503 "line": 64, 5504 "column": 6 5505 } 5506 } 5507 } 5508 ], 5509 "kind": "var", 5510 "loc": { 5511 "start": { 5512 "line": 64, 5513 "column": 1 5514 }, 5515 "end": { 5516 "line": 64, 5517 "column": 29 5518 } 5519 } 5520 }, 5521 { 5522 "type": "VariableDeclaration", 5523 "declarations": [ 5524 { 5525 "type": "VariableDeclarator", 5526 "id": { 5527 "type": "Identifier", 5528 "name": "d", 5529 "typeAnnotation": { 5530 "type": "TSTypeReference", 5531 "typeName": { 5532 "type": "Identifier", 5533 "name": "A", 5534 "decorators": [], 5535 "loc": { 5536 "start": { 5537 "line": 65, 5538 "column": 8 5539 }, 5540 "end": { 5541 "line": 65, 5542 "column": 9 5543 } 5544 } 5545 }, 5546 "typeParameters": { 5547 "type": "TSTypeParameterInstantiation", 5548 "params": [ 5549 { 5550 "type": "TSNumberKeyword", 5551 "loc": { 5552 "start": { 5553 "line": 65, 5554 "column": 10 5555 }, 5556 "end": { 5557 "line": 65, 5558 "column": 16 5559 } 5560 } 5561 }, 5562 { 5563 "type": "TSTypeLiteral", 5564 "members": [ 5565 { 5566 "type": "TSPropertySignature", 5567 "computed": false, 5568 "optional": false, 5569 "readonly": false, 5570 "key": { 5571 "type": "Identifier", 5572 "name": "a", 5573 "decorators": [], 5574 "loc": { 5575 "start": { 5576 "line": 65, 5577 "column": 20 5578 }, 5579 "end": { 5580 "line": 65, 5581 "column": 21 5582 } 5583 } 5584 }, 5585 "typeAnnotation": { 5586 "type": "TSNumberKeyword", 5587 "loc": { 5588 "start": { 5589 "line": 65, 5590 "column": 23 5591 }, 5592 "end": { 5593 "line": 65, 5594 "column": 29 5595 } 5596 } 5597 }, 5598 "loc": { 5599 "start": { 5600 "line": 65, 5601 "column": 20 5602 }, 5603 "end": { 5604 "line": 65, 5605 "column": 30 5606 } 5607 } 5608 }, 5609 { 5610 "type": "TSPropertySignature", 5611 "computed": false, 5612 "optional": false, 5613 "readonly": false, 5614 "key": { 5615 "type": "Identifier", 5616 "name": "b", 5617 "decorators": [], 5618 "loc": { 5619 "start": { 5620 "line": 65, 5621 "column": 31 5622 }, 5623 "end": { 5624 "line": 65, 5625 "column": 32 5626 } 5627 } 5628 }, 5629 "typeAnnotation": { 5630 "type": "TSStringKeyword", 5631 "loc": { 5632 "start": { 5633 "line": 65, 5634 "column": 34 5635 }, 5636 "end": { 5637 "line": 65, 5638 "column": 40 5639 } 5640 } 5641 }, 5642 "loc": { 5643 "start": { 5644 "line": 65, 5645 "column": 31 5646 }, 5647 "end": { 5648 "line": 65, 5649 "column": 42 5650 } 5651 } 5652 } 5653 ], 5654 "loc": { 5655 "start": { 5656 "line": 65, 5657 "column": 18 5658 }, 5659 "end": { 5660 "line": 65, 5661 "column": 42 5662 } 5663 } 5664 }, 5665 { 5666 "type": "TSTupleType", 5667 "elementTypes": [ 5668 { 5669 "type": "TSNumberKeyword", 5670 "loc": { 5671 "start": { 5672 "line": 65, 5673 "column": 45 5674 }, 5675 "end": { 5676 "line": 65, 5677 "column": 52 5678 } 5679 } 5680 }, 5681 { 5682 "type": "TSStringKeyword", 5683 "loc": { 5684 "start": { 5685 "line": 65, 5686 "column": 53 5687 }, 5688 "end": { 5689 "line": 65, 5690 "column": 60 5691 } 5692 } 5693 } 5694 ], 5695 "loc": { 5696 "start": { 5697 "line": 65, 5698 "column": 44 5699 }, 5700 "end": { 5701 "line": 65, 5702 "column": 60 5703 } 5704 } 5705 } 5706 ], 5707 "loc": { 5708 "start": { 5709 "line": 65, 5710 "column": 8 5711 }, 5712 "end": { 5713 "line": 65, 5714 "column": 61 5715 } 5716 } 5717 }, 5718 "loc": { 5719 "start": { 5720 "line": 65, 5721 "column": 8 5722 }, 5723 "end": { 5724 "line": 65, 5725 "column": 9 5726 } 5727 } 5728 }, 5729 "decorators": [], 5730 "loc": { 5731 "start": { 5732 "line": 65, 5733 "column": 5 5734 }, 5735 "end": { 5736 "line": 65, 5737 "column": 6 5738 } 5739 } 5740 }, 5741 "init": null, 5742 "loc": { 5743 "start": { 5744 "line": 65, 5745 "column": 5 5746 }, 5747 "end": { 5748 "line": 65, 5749 "column": 6 5750 } 5751 } 5752 } 5753 ], 5754 "kind": "var", 5755 "loc": { 5756 "start": { 5757 "line": 65, 5758 "column": 1 5759 }, 5760 "end": { 5761 "line": 65, 5762 "column": 62 5763 } 5764 } 5765 }, 5766 { 5767 "type": "VariableDeclaration", 5768 "declarations": [ 5769 { 5770 "type": "VariableDeclarator", 5771 "id": { 5772 "type": "Identifier", 5773 "name": "e", 5774 "typeAnnotation": { 5775 "type": "TSTypeReference", 5776 "typeName": { 5777 "type": "Identifier", 5778 "name": "T", 5779 "decorators": [], 5780 "loc": { 5781 "start": { 5782 "line": 66, 5783 "column": 8 5784 }, 5785 "end": { 5786 "line": 66, 5787 "column": 9 5788 } 5789 } 5790 }, 5791 "typeParameters": { 5792 "type": "TSTypeParameterInstantiation", 5793 "params": [ 5794 { 5795 "type": "TSFunctionType", 5796 "params": [], 5797 "typeParameters": { 5798 "type": "TSTypeParameterDeclaration", 5799 "params": [ 5800 { 5801 "type": "TSTypeParameter", 5802 "name": { 5803 "type": "Identifier", 5804 "name": "A", 5805 "decorators": [], 5806 "loc": { 5807 "start": { 5808 "line": 66, 5809 "column": 11 5810 }, 5811 "end": { 5812 "line": 66, 5813 "column": 12 5814 } 5815 } 5816 }, 5817 "loc": { 5818 "start": { 5819 "line": 66, 5820 "column": 11 5821 }, 5822 "end": { 5823 "line": 66, 5824 "column": 13 5825 } 5826 } 5827 } 5828 ], 5829 "loc": { 5830 "start": { 5831 "line": 66, 5832 "column": 10 5833 }, 5834 "end": { 5835 "line": 66, 5836 "column": 13 5837 } 5838 } 5839 }, 5840 "returnType": { 5841 "type": "TSTypeLiteral", 5842 "members": [], 5843 "loc": { 5844 "start": { 5845 "line": 66, 5846 "column": 19 5847 }, 5848 "end": { 5849 "line": 66, 5850 "column": 21 5851 } 5852 } 5853 }, 5854 "loc": { 5855 "start": { 5856 "line": 66, 5857 "column": 10 5858 }, 5859 "end": { 5860 "line": 66, 5861 "column": 21 5862 } 5863 } 5864 } 5865 ], 5866 "loc": { 5867 "start": { 5868 "line": 66, 5869 "column": 8 5870 }, 5871 "end": { 5872 "line": 66, 5873 "column": 22 5874 } 5875 } 5876 }, 5877 "loc": { 5878 "start": { 5879 "line": 66, 5880 "column": 8 5881 }, 5882 "end": { 5883 "line": 66, 5884 "column": 9 5885 } 5886 } 5887 }, 5888 "decorators": [], 5889 "loc": { 5890 "start": { 5891 "line": 66, 5892 "column": 5 5893 }, 5894 "end": { 5895 "line": 66, 5896 "column": 6 5897 } 5898 } 5899 }, 5900 "init": null, 5901 "loc": { 5902 "start": { 5903 "line": 66, 5904 "column": 5 5905 }, 5906 "end": { 5907 "line": 66, 5908 "column": 6 5909 } 5910 } 5911 } 5912 ], 5913 "kind": "var", 5914 "loc": { 5915 "start": { 5916 "line": 66, 5917 "column": 1 5918 }, 5919 "end": { 5920 "line": 66, 5921 "column": 23 5922 } 5923 } 5924 }, 5925 { 5926 "type": "TSTypeAliasDeclaration", 5927 "id": { 5928 "type": "Identifier", 5929 "name": "E", 5930 "decorators": [], 5931 "loc": { 5932 "start": { 5933 "line": 68, 5934 "column": 6 5935 }, 5936 "end": { 5937 "line": 68, 5938 "column": 7 5939 } 5940 } 5941 }, 5942 "typeAnnotation": { 5943 "type": "TSUnionType", 5944 "types": [ 5945 { 5946 "type": "TSNumberKeyword", 5947 "loc": { 5948 "start": { 5949 "line": 68, 5950 "column": 38 5951 }, 5952 "end": { 5953 "line": 68, 5954 "column": 44 5955 } 5956 } 5957 }, 5958 { 5959 "type": "TSTypeReference", 5960 "typeName": { 5961 "type": "Identifier", 5962 "name": "T", 5963 "decorators": [], 5964 "loc": { 5965 "start": { 5966 "line": 68, 5967 "column": 47 5968 }, 5969 "end": { 5970 "line": 68, 5971 "column": 48 5972 } 5973 } 5974 }, 5975 "loc": { 5976 "start": { 5977 "line": 68, 5978 "column": 47 5979 }, 5980 "end": { 5981 "line": 68, 5982 "column": 48 5983 } 5984 } 5985 }, 5986 { 5987 "type": "TSStringKeyword", 5988 "loc": { 5989 "start": { 5990 "line": 68, 5991 "column": 51 5992 }, 5993 "end": { 5994 "line": 68, 5995 "column": 57 5996 } 5997 } 5998 } 5999 ], 6000 "loc": { 6001 "start": { 6002 "line": 68, 6003 "column": 38 6004 }, 6005 "end": { 6006 "line": 68, 6007 "column": 57 6008 } 6009 } 6010 }, 6011 "typeParameters": { 6012 "type": "TSTypeParameterDeclaration", 6013 "params": [ 6014 { 6015 "type": "TSTypeParameter", 6016 "name": { 6017 "type": "Identifier", 6018 "name": "R", 6019 "decorators": [], 6020 "loc": { 6021 "start": { 6022 "line": 68, 6023 "column": 8 6024 }, 6025 "end": { 6026 "line": 68, 6027 "column": 9 6028 } 6029 } 6030 }, 6031 "constraint": { 6032 "type": "TSTypeReference", 6033 "typeName": { 6034 "type": "Identifier", 6035 "name": "B", 6036 "decorators": [], 6037 "loc": { 6038 "start": { 6039 "line": 68, 6040 "column": 18 6041 }, 6042 "end": { 6043 "line": 68, 6044 "column": 19 6045 } 6046 } 6047 }, 6048 "loc": { 6049 "start": { 6050 "line": 68, 6051 "column": 18 6052 }, 6053 "end": { 6054 "line": 68, 6055 "column": 19 6056 } 6057 } 6058 }, 6059 "loc": { 6060 "start": { 6061 "line": 68, 6062 "column": 8 6063 }, 6064 "end": { 6065 "line": 68, 6066 "column": 20 6067 } 6068 } 6069 }, 6070 { 6071 "type": "TSTypeParameter", 6072 "name": { 6073 "type": "Identifier", 6074 "name": "C", 6075 "decorators": [], 6076 "loc": { 6077 "start": { 6078 "line": 68, 6079 "column": 21 6080 }, 6081 "end": { 6082 "line": 68, 6083 "column": 22 6084 } 6085 } 6086 }, 6087 "loc": { 6088 "start": { 6089 "line": 68, 6090 "column": 21 6091 }, 6092 "end": { 6093 "line": 68, 6094 "column": 23 6095 } 6096 } 6097 }, 6098 { 6099 "type": "TSTypeParameter", 6100 "name": { 6101 "type": "Identifier", 6102 "name": "T", 6103 "decorators": [], 6104 "loc": { 6105 "start": { 6106 "line": 68, 6107 "column": 24 6108 }, 6109 "end": { 6110 "line": 68, 6111 "column": 25 6112 } 6113 } 6114 }, 6115 "default": { 6116 "type": "TSNumberKeyword", 6117 "loc": { 6118 "start": { 6119 "line": 68, 6120 "column": 28 6121 }, 6122 "end": { 6123 "line": 68, 6124 "column": 34 6125 } 6126 } 6127 }, 6128 "loc": { 6129 "start": { 6130 "line": 68, 6131 "column": 24 6132 }, 6133 "end": { 6134 "line": 68, 6135 "column": 35 6136 } 6137 } 6138 } 6139 ], 6140 "loc": { 6141 "start": { 6142 "line": 68, 6143 "column": 7 6144 }, 6145 "end": { 6146 "line": 68, 6147 "column": 35 6148 } 6149 } 6150 }, 6151 "loc": { 6152 "start": { 6153 "line": 68, 6154 "column": 1 6155 }, 6156 "end": { 6157 "line": 68, 6158 "column": 58 6159 } 6160 } 6161 }, 6162 { 6163 "type": "EmptyStatement", 6164 "loc": { 6165 "start": { 6166 "line": 68, 6167 "column": 57 6168 }, 6169 "end": { 6170 "line": 68, 6171 "column": 58 6172 } 6173 } 6174 }, 6175 { 6176 "type": "TSTypeAliasDeclaration", 6177 "id": { 6178 "type": "Identifier", 6179 "name": "P", 6180 "decorators": [], 6181 "loc": { 6182 "start": { 6183 "line": 69, 6184 "column": 6 6185 }, 6186 "end": { 6187 "line": 69, 6188 "column": 7 6189 } 6190 } 6191 }, 6192 "typeAnnotation": { 6193 "type": "TSTypeLiteral", 6194 "members": [ 6195 { 6196 "type": "TSPropertySignature", 6197 "computed": false, 6198 "optional": false, 6199 "readonly": false, 6200 "key": { 6201 "type": "Identifier", 6202 "name": "a", 6203 "decorators": [], 6204 "loc": { 6205 "start": { 6206 "line": 69, 6207 "column": 52 6208 }, 6209 "end": { 6210 "line": 69, 6211 "column": 53 6212 } 6213 } 6214 }, 6215 "typeAnnotation": { 6216 "type": "TSTypeReference", 6217 "typeName": { 6218 "type": "Identifier", 6219 "name": "K", 6220 "decorators": [], 6221 "loc": { 6222 "start": { 6223 "line": 69, 6224 "column": 54 6225 }, 6226 "end": { 6227 "line": 69, 6228 "column": 55 6229 } 6230 } 6231 }, 6232 "loc": { 6233 "start": { 6234 "line": 69, 6235 "column": 54 6236 }, 6237 "end": { 6238 "line": 69, 6239 "column": 55 6240 } 6241 } 6242 }, 6243 "loc": { 6244 "start": { 6245 "line": 69, 6246 "column": 52 6247 }, 6248 "end": { 6249 "line": 69, 6250 "column": 56 6251 } 6252 } 6253 }, 6254 { 6255 "type": "TSPropertySignature", 6256 "computed": false, 6257 "optional": false, 6258 "readonly": false, 6259 "key": { 6260 "type": "Identifier", 6261 "name": "b", 6262 "decorators": [], 6263 "loc": { 6264 "start": { 6265 "line": 69, 6266 "column": 57 6267 }, 6268 "end": { 6269 "line": 69, 6270 "column": 58 6271 } 6272 } 6273 }, 6274 "typeAnnotation": { 6275 "type": "TSTypeReference", 6276 "typeName": { 6277 "type": "Identifier", 6278 "name": "Q", 6279 "decorators": [], 6280 "loc": { 6281 "start": { 6282 "line": 69, 6283 "column": 59 6284 }, 6285 "end": { 6286 "line": 69, 6287 "column": 60 6288 } 6289 } 6290 }, 6291 "loc": { 6292 "start": { 6293 "line": 69, 6294 "column": 59 6295 }, 6296 "end": { 6297 "line": 69, 6298 "column": 60 6299 } 6300 } 6301 }, 6302 "loc": { 6303 "start": { 6304 "line": 69, 6305 "column": 57 6306 }, 6307 "end": { 6308 "line": 69, 6309 "column": 61 6310 } 6311 } 6312 } 6313 ], 6314 "loc": { 6315 "start": { 6316 "line": 69, 6317 "column": 51 6318 }, 6319 "end": { 6320 "line": 69, 6321 "column": 61 6322 } 6323 } 6324 }, 6325 "typeParameters": { 6326 "type": "TSTypeParameterDeclaration", 6327 "params": [ 6328 { 6329 "type": "TSTypeParameter", 6330 "name": { 6331 "type": "Identifier", 6332 "name": "K", 6333 "decorators": [], 6334 "loc": { 6335 "start": { 6336 "line": 69, 6337 "column": 8 6338 }, 6339 "end": { 6340 "line": 69, 6341 "column": 9 6342 } 6343 } 6344 }, 6345 "loc": { 6346 "start": { 6347 "line": 69, 6348 "column": 8 6349 }, 6350 "end": { 6351 "line": 69, 6352 "column": 10 6353 } 6354 } 6355 }, 6356 { 6357 "type": "TSTypeParameter", 6358 "name": { 6359 "type": "Identifier", 6360 "name": "Q", 6361 "decorators": [], 6362 "loc": { 6363 "start": { 6364 "line": 69, 6365 "column": 11 6366 }, 6367 "end": { 6368 "line": 69, 6369 "column": 12 6370 } 6371 } 6372 }, 6373 "default": { 6374 "type": "TSUnionType", 6375 "types": [ 6376 { 6377 "type": "TSTupleType", 6378 "elementTypes": [ 6379 { 6380 "type": "TSNumberKeyword", 6381 "loc": { 6382 "start": { 6383 "line": 69, 6384 "column": 16 6385 }, 6386 "end": { 6387 "line": 69, 6388 "column": 23 6389 } 6390 } 6391 }, 6392 { 6393 "type": "TSNumberKeyword", 6394 "loc": { 6395 "start": { 6396 "line": 69, 6397 "column": 24 6398 }, 6399 "end": { 6400 "line": 69, 6401 "column": 31 6402 } 6403 } 6404 }, 6405 { 6406 "type": "TSStringKeyword", 6407 "loc": { 6408 "start": { 6409 "line": 69, 6410 "column": 32 6411 }, 6412 "end": { 6413 "line": 69, 6414 "column": 39 6415 } 6416 } 6417 } 6418 ], 6419 "loc": { 6420 "start": { 6421 "line": 69, 6422 "column": 15 6423 }, 6424 "end": { 6425 "line": 69, 6426 "column": 39 6427 } 6428 } 6429 }, 6430 { 6431 "type": "TSArrayType", 6432 "elementType": { 6433 "type": "TSAnyKeyword", 6434 "loc": { 6435 "start": { 6436 "line": 69, 6437 "column": 42 6438 }, 6439 "end": { 6440 "line": 69, 6441 "column": 45 6442 } 6443 } 6444 }, 6445 "loc": { 6446 "start": { 6447 "line": 69, 6448 "column": 42 6449 }, 6450 "end": { 6451 "line": 69, 6452 "column": 47 6453 } 6454 } 6455 } 6456 ], 6457 "loc": { 6458 "start": { 6459 "line": 69, 6460 "column": 15 6461 }, 6462 "end": { 6463 "line": 69, 6464 "column": 47 6465 } 6466 } 6467 }, 6468 "loc": { 6469 "start": { 6470 "line": 69, 6471 "column": 11 6472 }, 6473 "end": { 6474 "line": 69, 6475 "column": 48 6476 } 6477 } 6478 } 6479 ], 6480 "loc": { 6481 "start": { 6482 "line": 69, 6483 "column": 7 6484 }, 6485 "end": { 6486 "line": 69, 6487 "column": 48 6488 } 6489 } 6490 }, 6491 "loc": { 6492 "start": { 6493 "line": 69, 6494 "column": 1 6495 }, 6496 "end": { 6497 "line": 69, 6498 "column": 62 6499 } 6500 } 6501 }, 6502 { 6503 "type": "EmptyStatement", 6504 "loc": { 6505 "start": { 6506 "line": 69, 6507 "column": 61 6508 }, 6509 "end": { 6510 "line": 69, 6511 "column": 62 6512 } 6513 } 6514 }, 6515 { 6516 "type": "ExpressionStatement", 6517 "expression": { 6518 "type": "CallExpression", 6519 "callee": { 6520 "type": "Identifier", 6521 "name": "async", 6522 "decorators": [], 6523 "loc": { 6524 "start": { 6525 "line": 71, 6526 "column": 1 6527 }, 6528 "end": { 6529 "line": 71, 6530 "column": 6 6531 } 6532 } 6533 }, 6534 "arguments": [], 6535 "optional": false, 6536 "typeParameters": { 6537 "type": "TSTypeParameterInstantiation", 6538 "params": [ 6539 { 6540 "type": "TSFunctionType", 6541 "params": [], 6542 "typeParameters": { 6543 "type": "TSTypeParameterDeclaration", 6544 "params": [ 6545 { 6546 "type": "TSTypeParameter", 6547 "name": { 6548 "type": "Identifier", 6549 "name": "A", 6550 "decorators": [], 6551 "loc": { 6552 "start": { 6553 "line": 71, 6554 "column": 8 6555 }, 6556 "end": { 6557 "line": 71, 6558 "column": 9 6559 } 6560 } 6561 }, 6562 "loc": { 6563 "start": { 6564 "line": 71, 6565 "column": 8 6566 }, 6567 "end": { 6568 "line": 71, 6569 "column": 10 6570 } 6571 } 6572 } 6573 ], 6574 "loc": { 6575 "start": { 6576 "line": 71, 6577 "column": 7 6578 }, 6579 "end": { 6580 "line": 71, 6581 "column": 10 6582 } 6583 } 6584 }, 6585 "returnType": { 6586 "type": "TSTypeLiteral", 6587 "members": [], 6588 "loc": { 6589 "start": { 6590 "line": 71, 6591 "column": 16 6592 }, 6593 "end": { 6594 "line": 71, 6595 "column": 18 6596 } 6597 } 6598 }, 6599 "loc": { 6600 "start": { 6601 "line": 71, 6602 "column": 7 6603 }, 6604 "end": { 6605 "line": 71, 6606 "column": 18 6607 } 6608 } 6609 } 6610 ], 6611 "loc": { 6612 "start": { 6613 "line": 71, 6614 "column": 6 6615 }, 6616 "end": { 6617 "line": 71, 6618 "column": 19 6619 } 6620 } 6621 }, 6622 "loc": { 6623 "start": { 6624 "line": 71, 6625 "column": 1 6626 }, 6627 "end": { 6628 "line": 71, 6629 "column": 21 6630 } 6631 } 6632 }, 6633 "loc": { 6634 "start": { 6635 "line": 71, 6636 "column": 1 6637 }, 6638 "end": { 6639 "line": 71, 6640 "column": 22 6641 } 6642 } 6643 }, 6644 { 6645 "type": "ExpressionStatement", 6646 "expression": { 6647 "type": "CallExpression", 6648 "callee": { 6649 "type": "Identifier", 6650 "name": "p", 6651 "decorators": [], 6652 "loc": { 6653 "start": { 6654 "line": 72, 6655 "column": 1 6656 }, 6657 "end": { 6658 "line": 72, 6659 "column": 2 6660 } 6661 } 6662 }, 6663 "arguments": [], 6664 "optional": false, 6665 "typeParameters": { 6666 "type": "TSTypeParameterInstantiation", 6667 "params": [ 6668 { 6669 "type": "TSNumberKeyword", 6670 "loc": { 6671 "start": { 6672 "line": 72, 6673 "column": 3 6674 }, 6675 "end": { 6676 "line": 72, 6677 "column": 9 6678 } 6679 } 6680 } 6681 ], 6682 "loc": { 6683 "start": { 6684 "line": 72, 6685 "column": 2 6686 }, 6687 "end": { 6688 "line": 72, 6689 "column": 10 6690 } 6691 } 6692 }, 6693 "loc": { 6694 "start": { 6695 "line": 72, 6696 "column": 1 6697 }, 6698 "end": { 6699 "line": 72, 6700 "column": 12 6701 } 6702 } 6703 }, 6704 "loc": { 6705 "start": { 6706 "line": 72, 6707 "column": 1 6708 }, 6709 "end": { 6710 "line": 72, 6711 "column": 13 6712 } 6713 } 6714 }, 6715 { 6716 "type": "ExpressionStatement", 6717 "expression": { 6718 "type": "ArrowFunctionExpression", 6719 "function": { 6720 "type": "ScriptFunction", 6721 "id": null, 6722 "generator": false, 6723 "async": false, 6724 "expression": true, 6725 "params": [], 6726 "returnType": { 6727 "type": "TSNumberKeyword", 6728 "loc": { 6729 "start": { 6730 "line": 73, 6731 "column": 17 6732 }, 6733 "end": { 6734 "line": 73, 6735 "column": 23 6736 } 6737 } 6738 }, 6739 "typeParameters": { 6740 "type": "TSTypeParameterDeclaration", 6741 "params": [ 6742 { 6743 "type": "TSTypeParameter", 6744 "name": { 6745 "type": "Identifier", 6746 "name": "A", 6747 "decorators": [], 6748 "loc": { 6749 "start": { 6750 "line": 73, 6751 "column": 2 6752 }, 6753 "end": { 6754 "line": 73, 6755 "column": 3 6756 } 6757 } 6758 }, 6759 "constraint": { 6760 "type": "TSTypeReference", 6761 "typeName": { 6762 "type": "Identifier", 6763 "name": "B", 6764 "decorators": [], 6765 "loc": { 6766 "start": { 6767 "line": 73, 6768 "column": 12 6769 }, 6770 "end": { 6771 "line": 73, 6772 "column": 13 6773 } 6774 } 6775 }, 6776 "loc": { 6777 "start": { 6778 "line": 73, 6779 "column": 12 6780 }, 6781 "end": { 6782 "line": 73, 6783 "column": 13 6784 } 6785 } 6786 }, 6787 "loc": { 6788 "start": { 6789 "line": 73, 6790 "column": 2 6791 }, 6792 "end": { 6793 "line": 73, 6794 "column": 14 6795 } 6796 } 6797 } 6798 ], 6799 "loc": { 6800 "start": { 6801 "line": 73, 6802 "column": 1 6803 }, 6804 "end": { 6805 "line": 73, 6806 "column": 14 6807 } 6808 } 6809 }, 6810 "body": { 6811 "type": "BooleanLiteral", 6812 "value": true, 6813 "loc": { 6814 "start": { 6815 "line": 73, 6816 "column": 27 6817 }, 6818 "end": { 6819 "line": 73, 6820 "column": 31 6821 } 6822 } 6823 }, 6824 "loc": { 6825 "start": { 6826 "line": 73, 6827 "column": 1 6828 }, 6829 "end": { 6830 "line": 73, 6831 "column": 31 6832 } 6833 } 6834 }, 6835 "loc": { 6836 "start": { 6837 "line": 73, 6838 "column": 1 6839 }, 6840 "end": { 6841 "line": 73, 6842 "column": 31 6843 } 6844 } 6845 }, 6846 "loc": { 6847 "start": { 6848 "line": 73, 6849 "column": 1 6850 }, 6851 "end": { 6852 "line": 73, 6853 "column": 32 6854 } 6855 } 6856 }, 6857 { 6858 "type": "ExpressionStatement", 6859 "expression": { 6860 "type": "ArrowFunctionExpression", 6861 "function": { 6862 "type": "ScriptFunction", 6863 "id": null, 6864 "generator": false, 6865 "async": true, 6866 "expression": false, 6867 "params": [], 6868 "typeParameters": { 6869 "type": "TSTypeParameterDeclaration", 6870 "params": [ 6871 { 6872 "type": "TSTypeParameter", 6873 "name": { 6874 "type": "Identifier", 6875 "name": "A", 6876 "decorators": [], 6877 "loc": { 6878 "start": { 6879 "line": 74, 6880 "column": 7 6881 }, 6882 "end": { 6883 "line": 74, 6884 "column": 8 6885 } 6886 } 6887 }, 6888 "constraint": { 6889 "type": "TSTypeOperator", 6890 "operator": "readonly", 6891 "typeAnnotation": { 6892 "type": "TSTupleType", 6893 "elementTypes": [ 6894 { 6895 "type": "TSNumberKeyword", 6896 "loc": { 6897 "start": { 6898 "line": 74, 6899 "column": 27 6900 }, 6901 "end": { 6902 "line": 74, 6903 "column": 34 6904 } 6905 } 6906 }, 6907 { 6908 "type": "TSStringKeyword", 6909 "loc": { 6910 "start": { 6911 "line": 74, 6912 "column": 35 6913 }, 6914 "end": { 6915 "line": 74, 6916 "column": 42 6917 } 6918 } 6919 } 6920 ], 6921 "loc": { 6922 "start": { 6923 "line": 74, 6924 "column": 26 6925 }, 6926 "end": { 6927 "line": 74, 6928 "column": 42 6929 } 6930 } 6931 }, 6932 "loc": { 6933 "start": { 6934 "line": 74, 6935 "column": 17 6936 }, 6937 "end": { 6938 "line": 74, 6939 "column": 42 6940 } 6941 } 6942 }, 6943 "loc": { 6944 "start": { 6945 "line": 74, 6946 "column": 7 6947 }, 6948 "end": { 6949 "line": 74, 6950 "column": 43 6951 } 6952 } 6953 } 6954 ], 6955 "loc": { 6956 "start": { 6957 "line": 74, 6958 "column": 6 6959 }, 6960 "end": { 6961 "line": 74, 6962 "column": 43 6963 } 6964 } 6965 }, 6966 "body": { 6967 "type": "BlockStatement", 6968 "statements": [ 6969 { 6970 "type": "ReturnStatement", 6971 "argument": { 6972 "type": "StringLiteral", 6973 "value": "foo", 6974 "loc": { 6975 "start": { 6976 "line": 74, 6977 "column": 57 6978 }, 6979 "end": { 6980 "line": 74, 6981 "column": 62 6982 } 6983 } 6984 }, 6985 "loc": { 6986 "start": { 6987 "line": 74, 6988 "column": 50 6989 }, 6990 "end": { 6991 "line": 74, 6992 "column": 63 6993 } 6994 } 6995 } 6996 ], 6997 "loc": { 6998 "start": { 6999 "line": 74, 7000 "column": 49 7001 }, 7002 "end": { 7003 "line": 74, 7004 "column": 64 7005 } 7006 } 7007 }, 7008 "loc": { 7009 "start": { 7010 "line": 74, 7011 "column": 1 7012 }, 7013 "end": { 7014 "line": 74, 7015 "column": 64 7016 } 7017 } 7018 }, 7019 "loc": { 7020 "start": { 7021 "line": 74, 7022 "column": 1 7023 }, 7024 "end": { 7025 "line": 74, 7026 "column": 64 7027 } 7028 } 7029 }, 7030 "loc": { 7031 "start": { 7032 "line": 74, 7033 "column": 1 7034 }, 7035 "end": { 7036 "line": 74, 7037 "column": 65 7038 } 7039 } 7040 } 7041 ], 7042 "loc": { 7043 "start": { 7044 "line": 1, 7045 "column": 1 7046 }, 7047 "end": { 7048 "line": 75, 7049 "column": 1 7050 } 7051 } 7052} 7053