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 "loc": { 205 "start": { 206 "line": 18, 207 "column": 1 208 }, 209 "end": { 210 "line": 20, 211 "column": 2 212 } 213 } 214 }, 215 "body": [], 216 "indexSignatures": [ 217 { 218 "type": "TSIndexSignature", 219 "parameters": { 220 "type": "Identifier", 221 "name": "a", 222 "typeAnnotation": { 223 "type": "TSNumberKeyword", 224 "loc": { 225 "start": { 226 "line": 19, 227 "column": 6 228 }, 229 "end": { 230 "line": 19, 231 "column": 12 232 } 233 } 234 }, 235 "loc": { 236 "start": { 237 "line": 19, 238 "column": 4 239 }, 240 "end": { 241 "line": 19, 242 "column": 5 243 } 244 } 245 }, 246 "typeAnnotation": { 247 "type": "TSTypeReference", 248 "typeName": { 249 "type": "Identifier", 250 "name": "T", 251 "loc": { 252 "start": { 253 "line": 19, 254 "column": 14 255 }, 256 "end": { 257 "line": 19, 258 "column": 15 259 } 260 } 261 }, 262 "loc": { 263 "start": { 264 "line": 19, 265 "column": 14 266 }, 267 "end": { 268 "line": 19, 269 "column": 15 270 } 271 } 272 }, 273 "readonly": false, 274 "static": false, 275 "loc": { 276 "start": { 277 "line": 19, 278 "column": 3 279 }, 280 "end": { 281 "line": 19, 282 "column": 15 283 } 284 } 285 } 286 ], 287 "loc": { 288 "start": { 289 "line": 18, 290 "column": 25 291 }, 292 "end": { 293 "line": 20, 294 "column": 2 295 } 296 } 297 }, 298 "decorators": [], 299 "loc": { 300 "start": { 301 "line": 18, 302 "column": 1 303 }, 304 "end": { 305 "line": 20, 306 "column": 2 307 } 308 } 309 }, 310 { 311 "type": "ClassDeclaration", 312 "definition": { 313 "id": { 314 "type": "Identifier", 315 "name": "D", 316 "loc": { 317 "start": { 318 "line": 21, 319 "column": 7 320 }, 321 "end": { 322 "line": 21, 323 "column": 8 324 } 325 } 326 }, 327 "typeParameters": { 328 "type": "TSTypeParameterDeclaration", 329 "params": [ 330 { 331 "type": "TSTypeParameter", 332 "name": { 333 "type": "Identifier", 334 "name": "T", 335 "loc": { 336 "start": { 337 "line": 21, 338 "column": 9 339 }, 340 "end": { 341 "line": 21, 342 "column": 10 343 } 344 } 345 }, 346 "in": false, 347 "out": false, 348 "loc": { 349 "start": { 350 "line": 21, 351 "column": 9 352 }, 353 "end": { 354 "line": 21, 355 "column": 11 356 } 357 } 358 } 359 ], 360 "loc": { 361 "start": { 362 "line": 21, 363 "column": 8 364 }, 365 "end": { 366 "line": 21, 367 "column": 11 368 } 369 } 370 }, 371 "superClass": { 372 "type": "Identifier", 373 "name": "C", 374 "loc": { 375 "start": { 376 "line": 21, 377 "column": 20 378 }, 379 "end": { 380 "line": 21, 381 "column": 21 382 } 383 } 384 }, 385 "superTypeParameters": { 386 "type": "TSTypeParameterInstantiation", 387 "params": [ 388 { 389 "type": "TSTypeReference", 390 "typeName": { 391 "type": "Identifier", 392 "name": "T", 393 "loc": { 394 "start": { 395 "line": 21, 396 "column": 22 397 }, 398 "end": { 399 "line": 21, 400 "column": 23 401 } 402 } 403 }, 404 "loc": { 405 "start": { 406 "line": 21, 407 "column": 22 408 }, 409 "end": { 410 "line": 21, 411 "column": 23 412 } 413 } 414 } 415 ], 416 "loc": { 417 "start": { 418 "line": 21, 419 "column": 21 420 }, 421 "end": { 422 "line": 21, 423 "column": 24 424 } 425 } 426 }, 427 "implements": [], 428 "constructor": { 429 "type": "MethodDefinition", 430 "key": { 431 "type": "Identifier", 432 "name": "constructor", 433 "loc": { 434 "start": { 435 "line": 1, 436 "column": 1 437 }, 438 "end": { 439 "line": 1, 440 "column": 1 441 } 442 } 443 }, 444 "kind": "constructor", 445 "static": false, 446 "optional": false, 447 "computed": false, 448 "value": { 449 "type": "FunctionExpression", 450 "function": { 451 "type": "ScriptFunction", 452 "id": null, 453 "generator": false, 454 "async": false, 455 "expression": false, 456 "params": [ 457 { 458 "type": "RestElement", 459 "argument": { 460 "type": "Identifier", 461 "name": "args", 462 "loc": { 463 "start": { 464 "line": 1, 465 "column": 1 466 }, 467 "end": { 468 "line": 1, 469 "column": 1 470 } 471 } 472 }, 473 "loc": { 474 "start": { 475 "line": 1, 476 "column": 1 477 }, 478 "end": { 479 "line": 1, 480 "column": 1 481 } 482 } 483 } 484 ], 485 "body": { 486 "type": "BlockStatement", 487 "statements": [ 488 { 489 "type": "ExpressionStatement", 490 "expression": { 491 "type": "CallExpression", 492 "callee": { 493 "type": "Super", 494 "loc": { 495 "start": { 496 "line": 1, 497 "column": 1 498 }, 499 "end": { 500 "line": 1, 501 "column": 1 502 } 503 } 504 }, 505 "arguments": [ 506 { 507 "type": "SpreadElement", 508 "argument": { 509 "type": "Identifier", 510 "name": "args", 511 "loc": { 512 "start": { 513 "line": 1, 514 "column": 1 515 }, 516 "end": { 517 "line": 1, 518 "column": 1 519 } 520 } 521 }, 522 "loc": { 523 "start": { 524 "line": 1, 525 "column": 1 526 }, 527 "end": { 528 "line": 1, 529 "column": 1 530 } 531 } 532 } 533 ], 534 "optional": false, 535 "loc": { 536 "start": { 537 "line": 1, 538 "column": 1 539 }, 540 "end": { 541 "line": 1, 542 "column": 1 543 } 544 } 545 }, 546 "loc": { 547 "start": { 548 "line": 1, 549 "column": 1 550 }, 551 "end": { 552 "line": 1, 553 "column": 1 554 } 555 } 556 } 557 ], 558 "loc": { 559 "start": { 560 "line": 1, 561 "column": 1 562 }, 563 "end": { 564 "line": 1, 565 "column": 1 566 } 567 } 568 }, 569 "loc": { 570 "start": { 571 "line": 1, 572 "column": 1 573 }, 574 "end": { 575 "line": 1, 576 "column": 1 577 } 578 } 579 }, 580 "loc": { 581 "start": { 582 "line": 1, 583 "column": 1 584 }, 585 "end": { 586 "line": 1, 587 "column": 1 588 } 589 } 590 }, 591 "overloads": [], 592 "decorators": [], 593 "loc": { 594 "start": { 595 "line": 21, 596 "column": 1 597 }, 598 "end": { 599 "line": 22, 600 "column": 2 601 } 602 } 603 }, 604 "body": [], 605 "indexSignatures": [], 606 "loc": { 607 "start": { 608 "line": 21, 609 "column": 25 610 }, 611 "end": { 612 "line": 22, 613 "column": 2 614 } 615 } 616 }, 617 "decorators": [], 618 "loc": { 619 "start": { 620 "line": 21, 621 "column": 1 622 }, 623 "end": { 624 "line": 22, 625 "column": 2 626 } 627 } 628 } 629 ], 630 "loc": { 631 "start": { 632 "line": 1, 633 "column": 1 634 }, 635 "end": { 636 "line": 23, 637 "column": 1 638 } 639 } 640} 641