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