{ "type": "Script", "span": { "start": 227, "end": 1329, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 233, "end": 237, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 227, "end": 254, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 240, "end": 252, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 240, "end": 243, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 243, "end": 251, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 245, "end": 251, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": null, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 261, "end": 268, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 255, "end": 298, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 284, "end": 296, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 284, "end": 287, "ctxt": 0 }, "value": "bar", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 287, "end": 295, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 289, "end": 295, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 277, "end": 281, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 305, "end": 313, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "span": { "start": 299, "end": 346, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 332, "end": 344, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 332, "end": 335, "ctxt": 0 }, "value": "baz", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 335, "end": 343, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 337, "end": 343, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 322, "end": 329, "ctxt": 0 }, "value": "Derived", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 353, "end": 365, "ctxt": 0 }, "value": "OtherDerived", "optional": false }, "declare": false, "span": { "start": 347, "end": 396, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 381, "end": 394, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 381, "end": 385, "ctxt": 0 }, "value": "bing", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 385, "end": 393, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 387, "end": 393, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 374, "end": 378, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsInterfaceDeclaration", "span": { "start": 398, "end": 833, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 408, "end": 409, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 410, "end": 833, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 432, "end": 456, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 432, "end": 433, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 433, "end": 455, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 435, "end": 455, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 443, "end": 447, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 444, "end": 447, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 446, "end": 447, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 446, "end": 447, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 439, "end": 442, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 440, "end": 441, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 440, "end": 441, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 449, "end": 455, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 452, "end": 455, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 452, "end": 453, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 452, "end": 453, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 461, "end": 491, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 461, "end": 463, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 463, "end": 490, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 465, "end": 490, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 473, "end": 477, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 474, "end": 477, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 476, "end": 477, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 476, "end": 477, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 469, "end": 472, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 470, "end": 471, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 470, "end": 471, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 479, "end": 490, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 482, "end": 490, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 482, "end": 488, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 496, "end": 522, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 496, "end": 498, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 498, "end": 521, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 500, "end": 521, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 508, "end": 512, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 509, "end": 512, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 511, "end": 512, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 511, "end": 512, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 504, "end": 507, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 505, "end": 506, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 505, "end": 506, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 514, "end": 521, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 517, "end": 521, "ctxt": 0 }, "kind": "void" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 527, "end": 564, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 527, "end": 529, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 529, "end": 563, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 531, "end": 563, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 542, "end": 546, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 543, "end": 546, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 545, "end": 546, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 545, "end": 546, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 548, "end": 552, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 549, "end": 552, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 551, "end": 552, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 551, "end": 552, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 535, "end": 541, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 536, "end": 537, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 536, "end": 537, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 539, "end": 540, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 539, "end": 540, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 554, "end": 563, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 557, "end": 563, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 569, "end": 607, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 569, "end": 571, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 571, "end": 606, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 573, "end": 606, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 584, "end": 600, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 585, "end": 600, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 587, "end": 600, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 588, "end": 594, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 591, "end": 594, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 593, "end": 594, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 593, "end": 594, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 596, "end": 600, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 599, "end": 600, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 599, "end": 600, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 577, "end": 583, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 578, "end": 579, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 578, "end": 579, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 581, "end": 582, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 581, "end": 582, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 602, "end": 606, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 605, "end": 606, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 605, "end": 606, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 612, "end": 666, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 612, "end": 614, "ctxt": 0 }, "value": "a6", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 614, "end": 665, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 616, "end": 665, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 637, "end": 659, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 638, "end": 659, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 640, "end": 659, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 641, "end": 647, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 644, "end": 647, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 646, "end": 647, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 646, "end": 647, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 649, "end": 659, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 652, "end": 659, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 652, "end": 659, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 620, "end": 636, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 621, "end": 635, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 621, "end": 622, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 631, "end": 635, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 631, "end": 635, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 661, "end": 665, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 664, "end": 665, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 664, "end": 665, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 671, "end": 730, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 671, "end": 674, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 674, "end": 729, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 676, "end": 729, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 684, "end": 697, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 685, "end": 697, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 687, "end": 697, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 689, "end": 695, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 689, "end": 692, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 692, "end": 695, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 694, "end": 695, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 694, "end": 695, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 699, "end": 720, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 700, "end": 720, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 702, "end": 720, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 704, "end": 711, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 704, "end": 707, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 707, "end": 710, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 709, "end": 710, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 709, "end": 710, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 712, "end": 718, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 712, "end": 715, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 715, "end": 718, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 717, "end": 718, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 717, "end": 718, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 680, "end": 683, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 681, "end": 682, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 681, "end": 682, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 722, "end": 729, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 725, "end": 729, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 725, "end": 729, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 735, "end": 774, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 735, "end": 738, "ctxt": 0 }, "value": "a15", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 738, "end": 773, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 740, "end": 773, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 748, "end": 765, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 749, "end": 765, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 751, "end": 765, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 753, "end": 758, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 753, "end": 754, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 754, "end": 757, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 756, "end": 757, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 756, "end": 757, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 759, "end": 763, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 759, "end": 760, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 760, "end": 763, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 762, "end": 763, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 762, "end": 763, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 744, "end": 747, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 745, "end": 746, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 745, "end": 746, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 767, "end": 773, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 770, "end": 773, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 770, "end": 771, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 770, "end": 771, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 779, "end": 831, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 779, "end": 782, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 782, "end": 830, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 784, "end": 830, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 805, "end": 822, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 806, "end": 822, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 808, "end": 822, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 810, "end": 815, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 810, "end": 811, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 811, "end": 814, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 813, "end": 814, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 813, "end": 814, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 816, "end": 820, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 816, "end": 817, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 817, "end": 820, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 819, "end": 820, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 819, "end": 820, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 788, "end": 804, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 789, "end": 803, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 789, "end": 790, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 799, "end": 803, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 799, "end": 803, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 824, "end": 830, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 827, "end": 830, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 827, "end": 828, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 827, "end": 828, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 842, "end": 897, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 852, "end": 853, "ctxt": 0 }, "value": "I", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 853, "end": 856, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 854, "end": 855, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 854, "end": 855, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 865, "end": 866, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 865, "end": 866, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 867, "end": 897, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 873, "end": 894, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 873, "end": 874, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 874, "end": 893, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 876, "end": 893, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 881, "end": 885, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 882, "end": 885, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 884, "end": 885, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 884, "end": 885, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 887, "end": 893, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 890, "end": 893, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 890, "end": 891, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 890, "end": 891, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 899, "end": 961, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 909, "end": 911, "ctxt": 0 }, "value": "I2", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 911, "end": 914, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 912, "end": 913, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 912, "end": 913, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 923, "end": 924, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 923, "end": 924, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 925, "end": 961, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 931, "end": 958, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 931, "end": 933, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 933, "end": 957, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 935, "end": 957, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 940, "end": 944, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 941, "end": 944, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 943, "end": 944, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 943, "end": 944, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 946, "end": 957, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 949, "end": 957, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 949, "end": 955, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 963, "end": 1017, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 973, "end": 975, "ctxt": 0 }, "value": "I3", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 975, "end": 978, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 976, "end": 977, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 976, "end": 977, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 987, "end": 988, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 987, "end": 988, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 989, "end": 1017, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 995, "end": 1015, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 995, "end": 997, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 997, "end": 1014, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 999, "end": 1014, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1004, "end": 1008, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1005, "end": 1008, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1007, "end": 1008, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1007, "end": 1008, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1010, "end": 1014, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1013, "end": 1014, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1013, "end": 1014, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1019, "end": 1088, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1029, "end": 1031, "ctxt": 0 }, "value": "I4", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1031, "end": 1034, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1032, "end": 1033, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1032, "end": 1033, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1043, "end": 1044, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1043, "end": 1044, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1045, "end": 1088, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1051, "end": 1085, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1051, "end": 1053, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1053, "end": 1084, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1055, "end": 1084, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1063, "end": 1067, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1064, "end": 1067, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1066, "end": 1067, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1066, "end": 1067, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 1069, "end": 1073, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1070, "end": 1073, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1072, "end": 1073, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1072, "end": 1073, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1059, "end": 1062, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1060, "end": 1061, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1060, "end": 1061, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1075, "end": 1084, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 1078, "end": 1084, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1090, "end": 1160, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1100, "end": 1102, "ctxt": 0 }, "value": "I5", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1102, "end": 1105, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1103, "end": 1104, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1103, "end": 1104, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1114, "end": 1115, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1114, "end": 1115, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1116, "end": 1160, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1122, "end": 1157, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1122, "end": 1124, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1124, "end": 1156, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1126, "end": 1156, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1134, "end": 1150, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1135, "end": 1150, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1137, "end": 1150, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1138, "end": 1144, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1141, "end": 1144, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1143, "end": 1144, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1143, "end": 1144, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1146, "end": 1150, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1149, "end": 1150, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1149, "end": 1150, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1130, "end": 1133, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1131, "end": 1132, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1131, "end": 1132, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1152, "end": 1156, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1155, "end": 1156, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1155, "end": 1156, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1162, "end": 1256, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1172, "end": 1174, "ctxt": 0 }, "value": "I7", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1174, "end": 1177, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1175, "end": 1176, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1175, "end": 1176, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1186, "end": 1187, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1186, "end": 1187, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1188, "end": 1256, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1194, "end": 1253, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1194, "end": 1197, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1197, "end": 1252, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1199, "end": 1252, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1207, "end": 1220, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1208, "end": 1220, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1210, "end": 1220, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1212, "end": 1218, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1212, "end": 1215, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1215, "end": 1218, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1217, "end": 1218, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1217, "end": 1218, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 1222, "end": 1243, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1223, "end": 1243, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1225, "end": 1243, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1227, "end": 1234, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1227, "end": 1230, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1230, "end": 1233, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1232, "end": 1233, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1232, "end": 1233, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1235, "end": 1241, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1235, "end": 1238, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1238, "end": 1241, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1240, "end": 1241, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1240, "end": 1241, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1203, "end": 1206, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1204, "end": 1205, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1204, "end": 1205, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1245, "end": 1252, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1248, "end": 1252, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1248, "end": 1252, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1258, "end": 1329, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1268, "end": 1270, "ctxt": 0 }, "value": "I9", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1270, "end": 1273, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1271, "end": 1272, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1271, "end": 1272, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1282, "end": 1283, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1282, "end": 1283, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1284, "end": 1329, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1290, "end": 1326, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1290, "end": 1293, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1293, "end": 1325, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1295, "end": 1325, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1300, "end": 1317, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1301, "end": 1317, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1303, "end": 1317, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1305, "end": 1310, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1305, "end": 1306, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1306, "end": 1309, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1308, "end": 1309, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1308, "end": 1309, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1311, "end": 1315, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1311, "end": 1312, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1312, "end": 1315, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1314, "end": 1315, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1314, "end": 1315, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1319, "end": 1325, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 1322, "end": 1325, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 1322, "end": 1323, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1322, "end": 1323, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } } ], "interpreter": null }