1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "TSInterfaceDeclaration", 6 "body": { 7 "type": "TSInterfaceBody", 8 "body": [ 9 { 10 "type": "TSPropertySignature", 11 "computed": false, 12 "optional": true, 13 "readonly": false, 14 "key": { 15 "type": "Identifier", 16 "name": "a", 17 "loc": { 18 "start": { 19 "line": 18, 20 "column": 5 21 }, 22 "end": { 23 "line": 18, 24 "column": 6 25 } 26 } 27 }, 28 "typeAnnotation": { 29 "type": "TSNumberKeyword", 30 "loc": { 31 "start": { 32 "line": 18, 33 "column": 9 34 }, 35 "end": { 36 "line": 18, 37 "column": 15 38 } 39 } 40 }, 41 "loc": { 42 "start": { 43 "line": 18, 44 "column": 5 45 }, 46 "end": { 47 "line": 18, 48 "column": 16 49 } 50 } 51 }, 52 { 53 "type": "TSPropertySignature", 54 "computed": false, 55 "optional": false, 56 "readonly": false, 57 "key": { 58 "type": "Identifier", 59 "name": "b", 60 "loc": { 61 "start": { 62 "line": 19, 63 "column": 5 64 }, 65 "end": { 66 "line": 19, 67 "column": 6 68 } 69 } 70 }, 71 "typeAnnotation": { 72 "type": "TSUnionType", 73 "types": [ 74 { 75 "type": "TSStringKeyword", 76 "loc": { 77 "start": { 78 "line": 19, 79 "column": 8 80 }, 81 "end": { 82 "line": 19, 83 "column": 14 84 } 85 } 86 }, 87 { 88 "type": "TSBooleanKeyword", 89 "loc": { 90 "start": { 91 "line": 19, 92 "column": 17 93 }, 94 "end": { 95 "line": 19, 96 "column": 24 97 } 98 } 99 } 100 ], 101 "loc": { 102 "start": { 103 "line": 19, 104 "column": 8 105 }, 106 "end": { 107 "line": 19, 108 "column": 24 109 } 110 } 111 }, 112 "loc": { 113 "start": { 114 "line": 19, 115 "column": 5 116 }, 117 "end": { 118 "line": 19, 119 "column": 25 120 } 121 } 122 }, 123 { 124 "type": "TSMethodSignature", 125 "computed": false, 126 "optional": false, 127 "isGetAccessor": false, 128 "isSetAccessor": false, 129 "key": { 130 "type": "Identifier", 131 "name": "c", 132 "loc": { 133 "start": { 134 "line": 20, 135 "column": 5 136 }, 137 "end": { 138 "line": 20, 139 "column": 6 140 } 141 } 142 }, 143 "params": [ 144 { 145 "type": "Identifier", 146 "name": "a", 147 "typeAnnotation": { 148 "type": "TSFunctionType", 149 "params": [ 150 { 151 "type": "Identifier", 152 "name": "a", 153 "typeAnnotation": { 154 "type": "TSNumberKeyword", 155 "loc": { 156 "start": { 157 "line": 20, 158 "column": 14 159 }, 160 "end": { 161 "line": 20, 162 "column": 20 163 } 164 } 165 }, 166 "loc": { 167 "start": { 168 "line": 20, 169 "column": 11 170 }, 171 "end": { 172 "line": 20, 173 "column": 12 174 } 175 } 176 }, 177 { 178 "type": "Identifier", 179 "name": "b", 180 "typeAnnotation": { 181 "type": "TSVoidKeyword", 182 "loc": { 183 "start": { 184 "line": 20, 185 "column": 25 186 }, 187 "end": { 188 "line": 20, 189 "column": 29 190 } 191 } 192 }, 193 "loc": { 194 "start": { 195 "line": 20, 196 "column": 22 197 }, 198 "end": { 199 "line": 20, 200 "column": 23 201 } 202 } 203 } 204 ], 205 "returnType": { 206 "type": "TSStringKeyword", 207 "loc": { 208 "start": { 209 "line": 20, 210 "column": 34 211 }, 212 "end": { 213 "line": 20, 214 "column": 40 215 } 216 } 217 }, 218 "loc": { 219 "start": { 220 "line": 20, 221 "column": 10 222 }, 223 "end": { 224 "line": 20, 225 "column": 40 226 } 227 } 228 }, 229 "loc": { 230 "start": { 231 "line": 20, 232 "column": 7 233 }, 234 "end": { 235 "line": 20, 236 "column": 8 237 } 238 } 239 }, 240 { 241 "type": "Identifier", 242 "name": "b", 243 "typeAnnotation": { 244 "type": "TSArrayType", 245 "elementType": { 246 "type": "TSNumberKeyword", 247 "loc": { 248 "start": { 249 "line": 20, 250 "column": 46 251 }, 252 "end": { 253 "line": 20, 254 "column": 52 255 } 256 } 257 }, 258 "loc": { 259 "start": { 260 "line": 20, 261 "column": 46 262 }, 263 "end": { 264 "line": 20, 265 "column": 54 266 } 267 } 268 }, 269 "optional": true, 270 "loc": { 271 "start": { 272 "line": 20, 273 "column": 42 274 }, 275 "end": { 276 "line": 20, 277 "column": 43 278 } 279 } 280 } 281 ], 282 "typeAnnotation": { 283 "type": "TSUndefinedKeyword", 284 "loc": { 285 "start": { 286 "line": 20, 287 "column": 57 288 }, 289 "end": { 290 "line": 20, 291 "column": 66 292 } 293 } 294 }, 295 "loc": { 296 "start": { 297 "line": 20, 298 "column": 5 299 }, 300 "end": { 301 "line": 20, 302 "column": 67 303 } 304 } 305 }, 306 { 307 "type": "TSCallSignatureDeclaration", 308 "params": [ 309 { 310 "type": "Identifier", 311 "name": "a", 312 "typeAnnotation": { 313 "type": "TSStringKeyword", 314 "loc": { 315 "start": { 316 "line": 21, 317 "column": 9 318 }, 319 "end": { 320 "line": 21, 321 "column": 15 322 } 323 } 324 }, 325 "loc": { 326 "start": { 327 "line": 21, 328 "column": 6 329 }, 330 "end": { 331 "line": 21, 332 "column": 7 333 } 334 } 335 } 336 ], 337 "returnType": { 338 "type": "TSStringKeyword", 339 "loc": { 340 "start": { 341 "line": 21, 342 "column": 18 343 }, 344 "end": { 345 "line": 21, 346 "column": 24 347 } 348 } 349 }, 350 "loc": { 351 "start": { 352 "line": 21, 353 "column": 5 354 }, 355 "end": { 356 "line": 21, 357 "column": 25 358 } 359 } 360 }, 361 { 362 "type": "TSCallSignatureDeclaration", 363 "params": [ 364 { 365 "type": "Identifier", 366 "name": "a", 367 "typeAnnotation": { 368 "type": "TSNumberKeyword", 369 "loc": { 370 "start": { 371 "line": 22, 372 "column": 9 373 }, 374 "end": { 375 "line": 22, 376 "column": 15 377 } 378 } 379 }, 380 "loc": { 381 "start": { 382 "line": 22, 383 "column": 6 384 }, 385 "end": { 386 "line": 22, 387 "column": 7 388 } 389 } 390 } 391 ], 392 "returnType": { 393 "type": "TSNumberKeyword", 394 "loc": { 395 "start": { 396 "line": 22, 397 "column": 18 398 }, 399 "end": { 400 "line": 22, 401 "column": 24 402 } 403 } 404 }, 405 "loc": { 406 "start": { 407 "line": 22, 408 "column": 5 409 }, 410 "end": { 411 "line": 22, 412 "column": 25 413 } 414 } 415 }, 416 { 417 "type": "TSConstructSignatureDeclaration", 418 "params": [ 419 { 420 "type": "Identifier", 421 "name": "a", 422 "typeAnnotation": { 423 "type": "TSNullKeyword", 424 "loc": { 425 "start": { 426 "line": 23, 427 "column": 12 428 }, 429 "end": { 430 "line": 23, 431 "column": 16 432 } 433 } 434 }, 435 "loc": { 436 "start": { 437 "line": 23, 438 "column": 9 439 }, 440 "end": { 441 "line": 23, 442 "column": 10 443 } 444 } 445 }, 446 { 447 "type": "Identifier", 448 "name": "b", 449 "typeAnnotation": { 450 "type": "TSStringKeyword", 451 "loc": { 452 "start": { 453 "line": 23, 454 "column": 22 455 }, 456 "end": { 457 "line": 23, 458 "column": 28 459 } 460 } 461 }, 462 "optional": true, 463 "loc": { 464 "start": { 465 "line": 23, 466 "column": 18 467 }, 468 "end": { 469 "line": 23, 470 "column": 19 471 } 472 } 473 } 474 ], 475 "returnType": { 476 "type": "TSTypeLiteral", 477 "members": [ 478 { 479 "type": "TSPropertySignature", 480 "computed": false, 481 "optional": false, 482 "readonly": false, 483 "key": { 484 "type": "Identifier", 485 "name": "a", 486 "loc": { 487 "start": { 488 "line": 23, 489 "column": 33 490 }, 491 "end": { 492 "line": 23, 493 "column": 34 494 } 495 } 496 }, 497 "typeAnnotation": { 498 "type": "TSNumberKeyword", 499 "loc": { 500 "start": { 501 "line": 23, 502 "column": 36 503 }, 504 "end": { 505 "line": 23, 506 "column": 42 507 } 508 } 509 }, 510 "loc": { 511 "start": { 512 "line": 23, 513 "column": 33 514 }, 515 "end": { 516 "line": 23, 517 "column": 43 518 } 519 } 520 }, 521 { 522 "type": "TSPropertySignature", 523 "computed": false, 524 "optional": false, 525 "readonly": false, 526 "key": { 527 "type": "Identifier", 528 "name": "b", 529 "loc": { 530 "start": { 531 "line": 23, 532 "column": 44 533 }, 534 "end": { 535 "line": 23, 536 "column": 45 537 } 538 } 539 }, 540 "typeAnnotation": { 541 "type": "TSStringKeyword", 542 "loc": { 543 "start": { 544 "line": 23, 545 "column": 47 546 }, 547 "end": { 548 "line": 23, 549 "column": 53 550 } 551 } 552 }, 553 "loc": { 554 "start": { 555 "line": 23, 556 "column": 44 557 }, 558 "end": { 559 "line": 23, 560 "column": 54 561 } 562 } 563 }, 564 { 565 "type": "TSMethodSignature", 566 "computed": false, 567 "optional": true, 568 "isGetAccessor": false, 569 "isSetAccessor": false, 570 "key": { 571 "type": "Identifier", 572 "name": "c", 573 "loc": { 574 "start": { 575 "line": 23, 576 "column": 55 577 }, 578 "end": { 579 "line": 23, 580 "column": 56 581 } 582 } 583 }, 584 "params": [ 585 { 586 "type": "ArrayPattern", 587 "elements": [ 588 { 589 "type": "Identifier", 590 "name": "a", 591 "loc": { 592 "start": { 593 "line": 23, 594 "column": 59 595 }, 596 "end": { 597 "line": 23, 598 "column": 60 599 } 600 } 601 }, 602 { 603 "type": "Identifier", 604 "name": "b", 605 "loc": { 606 "start": { 607 "line": 23, 608 "column": 62 609 }, 610 "end": { 611 "line": 23, 612 "column": 63 613 } 614 } 615 } 616 ], 617 "loc": { 618 "start": { 619 "line": 23, 620 "column": 58 621 }, 622 "end": { 623 "line": 23, 624 "column": 64 625 } 626 } 627 } 628 ], 629 "typeAnnotation": { 630 "type": "TSStringKeyword", 631 "loc": { 632 "start": { 633 "line": 23, 634 "column": 67 635 }, 636 "end": { 637 "line": 23, 638 "column": 73 639 } 640 } 641 }, 642 "loc": { 643 "start": { 644 "line": 23, 645 "column": 55 646 }, 647 "end": { 648 "line": 23, 649 "column": 75 650 } 651 } 652 } 653 ], 654 "loc": { 655 "start": { 656 "line": 23, 657 "column": 31 658 }, 659 "end": { 660 "line": 23, 661 "column": 75 662 } 663 } 664 }, 665 "loc": { 666 "start": { 667 "line": 23, 668 "column": 5 669 }, 670 "end": { 671 "line": 24, 672 "column": 2 673 } 674 } 675 } 676 ], 677 "loc": { 678 "start": { 679 "line": 17, 680 "column": 27 681 }, 682 "end": { 683 "line": 24, 684 "column": 2 685 } 686 } 687 }, 688 "id": { 689 "type": "Identifier", 690 "name": "foo", 691 "loc": { 692 "start": { 693 "line": 17, 694 "column": 11 695 }, 696 "end": { 697 "line": 17, 698 "column": 14 699 } 700 } 701 }, 702 "extends": [ 703 { 704 "type": "TSInterfaceHeritage", 705 "expression": { 706 "type": "TSTypeReference", 707 "typeName": { 708 "type": "TSQualifiedName", 709 "left": { 710 "type": "Identifier", 711 "name": "a", 712 "loc": { 713 "start": { 714 "line": 17, 715 "column": 23 716 }, 717 "end": { 718 "line": 17, 719 "column": 24 720 } 721 } 722 }, 723 "right": { 724 "type": "Identifier", 725 "name": "b", 726 "loc": { 727 "start": { 728 "line": 17, 729 "column": 25 730 }, 731 "end": { 732 "line": 17, 733 "column": 26 734 } 735 } 736 }, 737 "loc": { 738 "start": { 739 "line": 17, 740 "column": 23 741 }, 742 "end": { 743 "line": 17, 744 "column": 28 745 } 746 } 747 }, 748 "loc": { 749 "start": { 750 "line": 17, 751 "column": 27 752 }, 753 "end": { 754 "line": 17, 755 "column": 24 756 } 757 } 758 }, 759 "loc": { 760 "start": { 761 "line": 17, 762 "column": 27 763 }, 764 "end": { 765 "line": 17, 766 "column": 24 767 } 768 } 769 } 770 ], 771 "loc": { 772 "start": { 773 "line": 17, 774 "column": 1 775 }, 776 "end": { 777 "line": 24, 778 "column": 2 779 } 780 } 781 } 782 ], 783 "loc": { 784 "start": { 785 "line": 1, 786 "column": 1 787 }, 788 "end": { 789 "line": 24, 790 "column": 2 791 } 792 } 793} 794