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