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