{ "type": "Script", "span": { "start": 228, "end": 1330, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 234, "end": 238, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 228, "end": 255, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 241, "end": 253, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 241, "end": 244, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 244, "end": 252, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 246, "end": 252, "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": 262, "end": 269, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 256, "end": 299, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 285, "end": 297, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 285, "end": 288, "ctxt": 0 }, "value": "bar", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 288, "end": 296, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 290, "end": 296, "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": 278, "end": 282, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 306, "end": 314, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "span": { "start": 300, "end": 347, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 333, "end": 345, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 333, "end": 336, "ctxt": 0 }, "value": "baz", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 336, "end": 344, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 338, "end": 344, "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": 323, "end": 330, "ctxt": 0 }, "value": "Derived", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 354, "end": 366, "ctxt": 0 }, "value": "OtherDerived", "optional": false }, "declare": false, "span": { "start": 348, "end": 397, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 382, "end": 395, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 382, "end": 386, "ctxt": 0 }, "value": "bing", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 386, "end": 394, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 388, "end": 394, "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": 375, "end": 379, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsInterfaceDeclaration", "span": { "start": 399, "end": 834, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 409, "end": 410, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 411, "end": 834, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 433, "end": 457, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 433, "end": 434, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 434, "end": 456, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 436, "end": 456, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 444, "end": 448, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 445, "end": 448, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 447, "end": 448, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 447, "end": 448, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 440, "end": 443, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 441, "end": 442, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 441, "end": 442, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 450, "end": 456, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 453, "end": 456, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 453, "end": 454, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 453, "end": 454, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 462, "end": 492, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 462, "end": 464, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 464, "end": 491, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 466, "end": 491, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 474, "end": 478, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 475, "end": 478, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 477, "end": 478, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 477, "end": 478, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 470, "end": 473, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 471, "end": 472, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 471, "end": 472, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 480, "end": 491, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 483, "end": 491, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 483, "end": 489, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 497, "end": 523, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 497, "end": 499, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 499, "end": 522, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 501, "end": 522, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 509, "end": 513, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 510, "end": 513, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 512, "end": 513, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 512, "end": 513, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 505, "end": 508, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 506, "end": 507, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 506, "end": 507, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 515, "end": 522, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 518, "end": 522, "ctxt": 0 }, "kind": "void" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 528, "end": 565, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 528, "end": 530, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 530, "end": 564, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 532, "end": 564, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 543, "end": 547, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 544, "end": 547, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 546, "end": 547, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 546, "end": 547, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 549, "end": 553, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 550, "end": 553, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 552, "end": 553, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 552, "end": 553, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 536, "end": 542, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 537, "end": 538, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 537, "end": 538, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 540, "end": 541, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 540, "end": 541, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 555, "end": 564, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 558, "end": 564, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 570, "end": 608, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 570, "end": 572, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 572, "end": 607, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 574, "end": 607, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 585, "end": 601, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 586, "end": 601, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 588, "end": 601, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 589, "end": 595, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 592, "end": 595, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 594, "end": 595, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 594, "end": 595, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 597, "end": 601, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 600, "end": 601, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 600, "end": 601, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 578, "end": 584, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 579, "end": 580, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 579, "end": 580, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 582, "end": 583, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 582, "end": 583, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 603, "end": 607, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 606, "end": 607, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 606, "end": 607, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 613, "end": 667, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 613, "end": 615, "ctxt": 0 }, "value": "a6", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 615, "end": 666, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 617, "end": 666, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 638, "end": 660, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 639, "end": 660, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 641, "end": 660, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 642, "end": 648, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 645, "end": 648, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 647, "end": 648, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 647, "end": 648, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 650, "end": 660, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 653, "end": 660, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 653, "end": 660, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 621, "end": 637, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 622, "end": 636, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 622, "end": 623, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeReference", "span": { "start": 632, "end": 636, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 632, "end": 636, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 662, "end": 666, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 665, "end": 666, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 665, "end": 666, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 672, "end": 731, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 672, "end": 675, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 675, "end": 730, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 677, "end": 730, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 685, "end": 698, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 686, "end": 698, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 688, "end": 698, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 690, "end": 696, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 690, "end": 693, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 693, "end": 696, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 695, "end": 696, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 695, "end": 696, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 700, "end": 721, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 701, "end": 721, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 703, "end": 721, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 705, "end": 712, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 705, "end": 708, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 708, "end": 711, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 710, "end": 711, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 710, "end": 711, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 713, "end": 719, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 713, "end": 716, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 716, "end": 719, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 718, "end": 719, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 718, "end": 719, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 681, "end": 684, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 682, "end": 683, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 682, "end": 683, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 723, "end": 730, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 726, "end": 730, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 726, "end": 730, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 736, "end": 775, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 736, "end": 739, "ctxt": 0 }, "value": "a15", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 739, "end": 774, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 741, "end": 774, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 749, "end": 766, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 750, "end": 766, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 752, "end": 766, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 754, "end": 759, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 754, "end": 755, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 755, "end": 758, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 757, "end": 758, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 757, "end": 758, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 760, "end": 764, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 760, "end": 761, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 761, "end": 764, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 763, "end": 764, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 763, "end": 764, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 745, "end": 748, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 746, "end": 747, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 746, "end": 747, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 768, "end": 774, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 771, "end": 774, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 771, "end": 772, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 771, "end": 772, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 780, "end": 832, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 780, "end": 783, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 783, "end": 831, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 785, "end": 831, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 806, "end": 823, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 807, "end": 823, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 809, "end": 823, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 811, "end": 816, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 811, "end": 812, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 812, "end": 815, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 814, "end": 815, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 814, "end": 815, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 817, "end": 821, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 817, "end": 818, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 818, "end": 821, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 820, "end": 821, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 820, "end": 821, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 789, "end": 805, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 790, "end": 804, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 790, "end": 791, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": { "type": "TsTypeReference", "span": { "start": 800, "end": 804, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 800, "end": 804, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 825, "end": 831, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 828, "end": 831, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 828, "end": 829, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 828, "end": 829, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 843, "end": 898, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 853, "end": 854, "ctxt": 0 }, "value": "I", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 854, "end": 857, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 855, "end": 856, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 855, "end": 856, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 866, "end": 867, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 866, "end": 867, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 868, "end": 898, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 874, "end": 895, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 874, "end": 875, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 875, "end": 894, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 877, "end": 894, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 882, "end": 886, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 883, "end": 886, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 885, "end": 886, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 885, "end": 886, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 888, "end": 894, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 891, "end": 894, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 891, "end": 892, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 891, "end": 892, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 900, "end": 962, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 910, "end": 912, "ctxt": 0 }, "value": "I2", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 912, "end": 915, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 913, "end": 914, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 913, "end": 914, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 924, "end": 925, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 924, "end": 925, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 926, "end": 962, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 932, "end": 959, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 932, "end": 934, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 934, "end": 958, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 936, "end": 958, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 941, "end": 945, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 942, "end": 945, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 944, "end": 945, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 944, "end": 945, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 947, "end": 958, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 950, "end": 958, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 950, "end": 956, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 964, "end": 1018, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 974, "end": 976, "ctxt": 0 }, "value": "I3", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 976, "end": 979, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 977, "end": 978, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 977, "end": 978, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 988, "end": 989, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 988, "end": 989, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 990, "end": 1018, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 996, "end": 1016, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 996, "end": 998, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 998, "end": 1015, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1000, "end": 1015, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1005, "end": 1009, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1006, "end": 1009, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1008, "end": 1009, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1008, "end": 1009, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1011, "end": 1015, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1014, "end": 1015, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1014, "end": 1015, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1020, "end": 1089, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1030, "end": 1032, "ctxt": 0 }, "value": "I4", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1032, "end": 1035, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1033, "end": 1034, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1033, "end": 1034, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1044, "end": 1045, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1044, "end": 1045, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1046, "end": 1089, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1052, "end": 1086, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1052, "end": 1054, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1054, "end": 1085, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1056, "end": 1085, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1064, "end": 1068, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1065, "end": 1068, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1067, "end": 1068, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1067, "end": 1068, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 1070, "end": 1074, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1071, "end": 1074, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1073, "end": 1074, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1073, "end": 1074, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1060, "end": 1063, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1061, "end": 1062, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1061, "end": 1062, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1076, "end": 1085, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 1079, "end": 1085, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1091, "end": 1161, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1101, "end": 1103, "ctxt": 0 }, "value": "I5", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1103, "end": 1106, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1104, "end": 1105, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1104, "end": 1105, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1115, "end": 1116, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1115, "end": 1116, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1117, "end": 1161, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1123, "end": 1158, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1123, "end": 1125, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1125, "end": 1157, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1127, "end": 1157, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1135, "end": 1151, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1136, "end": 1151, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1138, "end": 1151, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1139, "end": 1145, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1142, "end": 1145, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1144, "end": 1145, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1144, "end": 1145, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1147, "end": 1151, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1150, "end": 1151, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1150, "end": 1151, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1131, "end": 1134, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1132, "end": 1133, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1132, "end": 1133, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1153, "end": 1157, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1156, "end": 1157, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1156, "end": 1157, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1163, "end": 1257, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1173, "end": 1175, "ctxt": 0 }, "value": "I7", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1175, "end": 1178, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1176, "end": 1177, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1176, "end": 1177, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1187, "end": 1188, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1187, "end": 1188, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1189, "end": 1257, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1195, "end": 1254, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1195, "end": 1198, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1198, "end": 1253, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1200, "end": 1253, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1208, "end": 1221, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1209, "end": 1221, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1211, "end": 1221, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1213, "end": 1219, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1213, "end": 1216, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1216, "end": 1219, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1218, "end": 1219, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1218, "end": 1219, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 1223, "end": 1244, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1224, "end": 1244, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1226, "end": 1244, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1228, "end": 1235, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1228, "end": 1231, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1231, "end": 1234, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1233, "end": 1234, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1233, "end": 1234, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1236, "end": 1242, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1236, "end": 1239, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1239, "end": 1242, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1241, "end": 1242, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1241, "end": 1242, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1204, "end": 1207, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1205, "end": 1206, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1205, "end": 1206, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1246, "end": 1253, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1249, "end": 1253, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1249, "end": 1253, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1259, "end": 1330, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1269, "end": 1271, "ctxt": 0 }, "value": "I9", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1271, "end": 1274, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1272, "end": 1273, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1272, "end": 1273, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1283, "end": 1284, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1283, "end": 1284, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1285, "end": 1330, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1291, "end": 1327, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1291, "end": 1294, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1294, "end": 1326, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1296, "end": 1326, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1301, "end": 1318, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1302, "end": 1318, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1304, "end": 1318, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1306, "end": 1311, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1306, "end": 1307, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1307, "end": 1310, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1309, "end": 1310, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1309, "end": 1310, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1312, "end": 1316, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1312, "end": 1313, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1313, "end": 1316, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1315, "end": 1316, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1315, "end": 1316, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1320, "end": 1326, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 1323, "end": 1326, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 1323, "end": 1324, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1323, "end": 1324, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } } ], "interpreter": null }