1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "TSInterfaceDeclaration", 6 "body": { 7 "type": "TSInterfaceBody", 8 "body": [], 9 "loc": { 10 "start": { 11 "line": 17, 12 "column": 12 13 }, 14 "end": { 15 "line": 17, 16 "column": 14 17 } 18 } 19 }, 20 "id": { 21 "type": "Identifier", 22 "name": "I", 23 "decorators": [], 24 "loc": { 25 "start": { 26 "line": 17, 27 "column": 11 28 }, 29 "end": { 30 "line": 17, 31 "column": 12 32 } 33 } 34 }, 35 "extends": [], 36 "loc": { 37 "start": { 38 "line": 17, 39 "column": 1 40 }, 41 "end": { 42 "line": 17, 43 "column": 14 44 } 45 } 46 }, 47 { 48 "type": "ClassDeclaration", 49 "definition": { 50 "id": { 51 "type": "Identifier", 52 "name": "C", 53 "decorators": [], 54 "loc": { 55 "start": { 56 "line": 18, 57 "column": 7 58 }, 59 "end": { 60 "line": 18, 61 "column": 8 62 } 63 } 64 }, 65 "typeParameters": { 66 "type": "TSTypeParameterDeclaration", 67 "params": [ 68 { 69 "type": "TSTypeParameter", 70 "name": { 71 "type": "Identifier", 72 "name": "T", 73 "decorators": [], 74 "loc": { 75 "start": { 76 "line": 18, 77 "column": 9 78 }, 79 "end": { 80 "line": 18, 81 "column": 10 82 } 83 } 84 }, 85 "loc": { 86 "start": { 87 "line": 18, 88 "column": 9 89 }, 90 "end": { 91 "line": 18, 92 "column": 11 93 } 94 } 95 } 96 ], 97 "loc": { 98 "start": { 99 "line": 18, 100 "column": 8 101 }, 102 "end": { 103 "line": 18, 104 "column": 11 105 } 106 } 107 }, 108 "superClass": null, 109 "implements": [ 110 { 111 "type": "TSClassImplements", 112 "expression": { 113 "type": "Identifier", 114 "name": "I", 115 "decorators": [], 116 "loc": { 117 "start": { 118 "line": 18, 119 "column": 23 120 }, 121 "end": { 122 "line": 18, 123 "column": 24 124 } 125 } 126 }, 127 "loc": { 128 "start": { 129 "line": 18, 130 "column": 23 131 }, 132 "end": { 133 "line": 18, 134 "column": 26 135 } 136 } 137 } 138 ], 139 "constructor": { 140 "type": "MethodDefinition", 141 "key": { 142 "type": "Identifier", 143 "name": "constructor", 144 "decorators": [], 145 "loc": { 146 "start": { 147 "line": 1, 148 "column": 1 149 }, 150 "end": { 151 "line": 1, 152 "column": 1 153 } 154 } 155 }, 156 "kind": "constructor", 157 "static": false, 158 "optional": false, 159 "computed": false, 160 "value": { 161 "type": "FunctionExpression", 162 "function": { 163 "type": "ScriptFunction", 164 "id": null, 165 "generator": false, 166 "async": false, 167 "expression": false, 168 "params": [], 169 "body": { 170 "type": "BlockStatement", 171 "statements": [], 172 "loc": { 173 "start": { 174 "line": 1, 175 "column": 1 176 }, 177 "end": { 178 "line": 1, 179 "column": 1 180 } 181 } 182 }, 183 "loc": { 184 "start": { 185 "line": 1, 186 "column": 1 187 }, 188 "end": { 189 "line": 1, 190 "column": 1 191 } 192 } 193 }, 194 "loc": { 195 "start": { 196 "line": 1, 197 "column": 1 198 }, 199 "end": { 200 "line": 1, 201 "column": 1 202 } 203 } 204 }, 205 "overloads": [], 206 "decorators": [], 207 "loc": { 208 "start": { 209 "line": 18, 210 "column": 1 211 }, 212 "end": { 213 "line": 20, 214 "column": 2 215 } 216 } 217 }, 218 "body": [], 219 "indexSignatures": [ 220 { 221 "type": "TSIndexSignature", 222 "parameters": { 223 "type": "Identifier", 224 "name": "a", 225 "typeAnnotation": { 226 "type": "TSNumberKeyword", 227 "loc": { 228 "start": { 229 "line": 19, 230 "column": 6 231 }, 232 "end": { 233 "line": 19, 234 "column": 12 235 } 236 } 237 }, 238 "decorators": [], 239 "loc": { 240 "start": { 241 "line": 19, 242 "column": 4 243 }, 244 "end": { 245 "line": 19, 246 "column": 5 247 } 248 } 249 }, 250 "typeAnnotation": { 251 "type": "TSTypeReference", 252 "typeName": { 253 "type": "Identifier", 254 "name": "T", 255 "decorators": [], 256 "loc": { 257 "start": { 258 "line": 19, 259 "column": 14 260 }, 261 "end": { 262 "line": 19, 263 "column": 15 264 } 265 } 266 }, 267 "loc": { 268 "start": { 269 "line": 19, 270 "column": 14 271 }, 272 "end": { 273 "line": 19, 274 "column": 15 275 } 276 } 277 }, 278 "readonly": false, 279 "loc": { 280 "start": { 281 "line": 19, 282 "column": 4 283 }, 284 "end": { 285 "line": 19, 286 "column": 15 287 } 288 } 289 } 290 ], 291 "loc": { 292 "start": { 293 "line": 18, 294 "column": 25 295 }, 296 "end": { 297 "line": 20, 298 "column": 2 299 } 300 } 301 }, 302 "decorators": [], 303 "loc": { 304 "start": { 305 "line": 18, 306 "column": 1 307 }, 308 "end": { 309 "line": 20, 310 "column": 2 311 } 312 } 313 }, 314 { 315 "type": "ClassDeclaration", 316 "definition": { 317 "id": { 318 "type": "Identifier", 319 "name": "D", 320 "decorators": [], 321 "loc": { 322 "start": { 323 "line": 21, 324 "column": 7 325 }, 326 "end": { 327 "line": 21, 328 "column": 8 329 } 330 } 331 }, 332 "typeParameters": { 333 "type": "TSTypeParameterDeclaration", 334 "params": [ 335 { 336 "type": "TSTypeParameter", 337 "name": { 338 "type": "Identifier", 339 "name": "T", 340 "decorators": [], 341 "loc": { 342 "start": { 343 "line": 21, 344 "column": 9 345 }, 346 "end": { 347 "line": 21, 348 "column": 10 349 } 350 } 351 }, 352 "loc": { 353 "start": { 354 "line": 21, 355 "column": 9 356 }, 357 "end": { 358 "line": 21, 359 "column": 11 360 } 361 } 362 } 363 ], 364 "loc": { 365 "start": { 366 "line": 21, 367 "column": 8 368 }, 369 "end": { 370 "line": 21, 371 "column": 11 372 } 373 } 374 }, 375 "superClass": { 376 "type": "Identifier", 377 "name": "C", 378 "decorators": [], 379 "loc": { 380 "start": { 381 "line": 21, 382 "column": 20 383 }, 384 "end": { 385 "line": 21, 386 "column": 21 387 } 388 } 389 }, 390 "superTypeParameters": { 391 "type": "TSTypeParameterInstantiation", 392 "params": [ 393 { 394 "type": "TSTypeReference", 395 "typeName": { 396 "type": "Identifier", 397 "name": "T", 398 "decorators": [], 399 "loc": { 400 "start": { 401 "line": 21, 402 "column": 22 403 }, 404 "end": { 405 "line": 21, 406 "column": 23 407 } 408 } 409 }, 410 "loc": { 411 "start": { 412 "line": 21, 413 "column": 22 414 }, 415 "end": { 416 "line": 21, 417 "column": 23 418 } 419 } 420 } 421 ], 422 "loc": { 423 "start": { 424 "line": 21, 425 "column": 21 426 }, 427 "end": { 428 "line": 21, 429 "column": 24 430 } 431 } 432 }, 433 "implements": [], 434 "constructor": { 435 "type": "MethodDefinition", 436 "key": { 437 "type": "Identifier", 438 "name": "constructor", 439 "decorators": [], 440 "loc": { 441 "start": { 442 "line": 1, 443 "column": 1 444 }, 445 "end": { 446 "line": 1, 447 "column": 1 448 } 449 } 450 }, 451 "kind": "constructor", 452 "static": false, 453 "optional": false, 454 "computed": false, 455 "value": { 456 "type": "FunctionExpression", 457 "function": { 458 "type": "ScriptFunction", 459 "id": null, 460 "generator": false, 461 "async": false, 462 "expression": false, 463 "params": [ 464 { 465 "type": "RestElement", 466 "argument": { 467 "type": "Identifier", 468 "name": "args", 469 "decorators": [], 470 "loc": { 471 "start": { 472 "line": 1, 473 "column": 1 474 }, 475 "end": { 476 "line": 1, 477 "column": 1 478 } 479 } 480 }, 481 "loc": { 482 "start": { 483 "line": 1, 484 "column": 1 485 }, 486 "end": { 487 "line": 1, 488 "column": 1 489 } 490 } 491 } 492 ], 493 "body": { 494 "type": "BlockStatement", 495 "statements": [ 496 { 497 "type": "ExpressionStatement", 498 "expression": { 499 "type": "CallExpression", 500 "callee": { 501 "type": "Super", 502 "loc": { 503 "start": { 504 "line": 1, 505 "column": 1 506 }, 507 "end": { 508 "line": 1, 509 "column": 1 510 } 511 } 512 }, 513 "arguments": [ 514 { 515 "type": "SpreadElement", 516 "argument": { 517 "type": "Identifier", 518 "name": "args", 519 "decorators": [], 520 "loc": { 521 "start": { 522 "line": 1, 523 "column": 1 524 }, 525 "end": { 526 "line": 1, 527 "column": 1 528 } 529 } 530 }, 531 "loc": { 532 "start": { 533 "line": 1, 534 "column": 1 535 }, 536 "end": { 537 "line": 1, 538 "column": 1 539 } 540 } 541 } 542 ], 543 "optional": false, 544 "loc": { 545 "start": { 546 "line": 1, 547 "column": 1 548 }, 549 "end": { 550 "line": 1, 551 "column": 1 552 } 553 } 554 }, 555 "loc": { 556 "start": { 557 "line": 1, 558 "column": 1 559 }, 560 "end": { 561 "line": 1, 562 "column": 1 563 } 564 } 565 } 566 ], 567 "loc": { 568 "start": { 569 "line": 1, 570 "column": 1 571 }, 572 "end": { 573 "line": 1, 574 "column": 1 575 } 576 } 577 }, 578 "loc": { 579 "start": { 580 "line": 1, 581 "column": 1 582 }, 583 "end": { 584 "line": 1, 585 "column": 1 586 } 587 } 588 }, 589 "loc": { 590 "start": { 591 "line": 1, 592 "column": 1 593 }, 594 "end": { 595 "line": 1, 596 "column": 1 597 } 598 } 599 }, 600 "overloads": [], 601 "decorators": [], 602 "loc": { 603 "start": { 604 "line": 21, 605 "column": 1 606 }, 607 "end": { 608 "line": 22, 609 "column": 2 610 } 611 } 612 }, 613 "body": [], 614 "indexSignatures": [], 615 "loc": { 616 "start": { 617 "line": 21, 618 "column": 25 619 }, 620 "end": { 621 "line": 22, 622 "column": 2 623 } 624 } 625 }, 626 "decorators": [], 627 "loc": { 628 "start": { 629 "line": 21, 630 "column": 1 631 }, 632 "end": { 633 "line": 22, 634 "column": 2 635 } 636 } 637 } 638 ], 639 "loc": { 640 "start": { 641 "line": 1, 642 "column": 1 643 }, 644 "end": { 645 "line": 23, 646 "column": 1 647 } 648 } 649} 650