{ "type": "Script", "span": { "start": 226, "end": 1307, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 232, "end": 236, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 226, "end": 253, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 239, "end": 251, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 239, "end": 242, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 242, "end": 250, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 244, "end": 250, "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": 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": 355, "end": 367, "ctxt": 0 }, "value": "OtherDerived", "optional": false }, "declare": false, "span": { "start": 349, "end": 398, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 383, "end": 396, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 383, "end": 387, "ctxt": 0 }, "value": "bing", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 387, "end": 395, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 389, "end": 395, "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": 376, "end": 380, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsInterfaceDeclaration", "span": { "start": 402, "end": 810, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 412, "end": 413, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 414, "end": 810, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 438, "end": 458, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 438, "end": 439, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 439, "end": 457, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 441, "end": 457, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 445, "end": 449, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 446, "end": 449, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 448, "end": 449, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 448, "end": 449, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 441, "end": 444, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 442, "end": 443, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 442, "end": 443, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 451, "end": 457, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 454, "end": 457, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 454, "end": 455, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 454, "end": 455, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 464, "end": 490, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 464, "end": 466, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 466, "end": 489, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 468, "end": 489, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 472, "end": 476, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 473, "end": 476, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 475, "end": 476, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 475, "end": 476, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 468, "end": 471, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 469, "end": 470, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 469, "end": 470, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 478, "end": 489, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 481, "end": 489, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 481, "end": 487, "ctxt": 0 }, "kind": "string" } } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 496, "end": 518, "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": 517, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 500, "end": 517, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 504, "end": 508, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 505, "end": 508, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 507, "end": 508, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 507, "end": 508, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 500, "end": 503, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 501, "end": 502, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 501, "end": 502, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 510, "end": 517, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 513, "end": 517, "ctxt": 0 }, "kind": "void" } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 524, "end": 556, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 524, "end": 526, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 526, "end": 555, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 528, "end": 555, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 534, "end": 538, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 535, "end": 538, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 537, "end": 538, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 537, "end": 538, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 540, "end": 544, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 541, "end": 544, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 543, "end": 544, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 543, "end": 544, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 528, "end": 533, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 529, "end": 530, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 529, "end": 530, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 531, "end": 532, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 531, "end": 532, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 546, "end": 555, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 549, "end": 555, "ctxt": 0 }, "kind": "string" } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 562, "end": 595, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 562, "end": 564, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 564, "end": 594, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 566, "end": 594, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 572, "end": 588, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 573, "end": 588, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 575, "end": 588, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 576, "end": 582, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 579, "end": 582, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 581, "end": 582, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 581, "end": 582, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 584, "end": 588, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 587, "end": 588, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 587, "end": 588, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 566, "end": 571, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 567, "end": 568, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 567, "end": 568, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 569, "end": 570, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 569, "end": 570, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 590, "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 }, { "type": "TsPropertySignature", "span": { "start": 601, "end": 651, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 601, "end": 603, "ctxt": 0 }, "value": "a6", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 603, "end": 650, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 605, "end": 650, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 622, "end": 644, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 623, "end": 644, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 625, "end": 644, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 626, "end": 632, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 629, "end": 632, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 631, "end": 632, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 631, "end": 632, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 634, "end": 644, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 637, "end": 644, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 637, "end": 644, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 605, "end": 621, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 606, "end": 620, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 606, "end": 607, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 616, "end": 620, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 616, "end": 620, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 646, "end": 650, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 649, "end": 650, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 649, "end": 650, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 657, "end": 712, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 657, "end": 660, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 660, "end": 711, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 662, "end": 711, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 666, "end": 679, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 667, "end": 679, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 669, "end": 679, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 671, "end": 677, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 671, "end": 674, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 674, "end": 677, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 676, "end": 677, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 676, "end": 677, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 681, "end": 702, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 682, "end": 702, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 684, "end": 702, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 686, "end": 693, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 686, "end": 689, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 689, "end": 692, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 691, "end": 692, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 691, "end": 692, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 694, "end": 700, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 694, "end": 697, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 697, "end": 700, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 699, "end": 700, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 699, "end": 700, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 662, "end": 665, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 663, "end": 664, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 663, "end": 664, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 704, "end": 711, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 707, "end": 711, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 707, "end": 711, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 718, "end": 753, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 718, "end": 721, "ctxt": 0 }, "value": "a15", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 721, "end": 752, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 723, "end": 752, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 727, "end": 744, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 728, "end": 744, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 730, "end": 744, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 732, "end": 737, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 732, "end": 733, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 733, "end": 736, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 735, "end": 736, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 735, "end": 736, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 738, "end": 742, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 738, "end": 739, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 739, "end": 742, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 741, "end": 742, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 741, "end": 742, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 723, "end": 726, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 724, "end": 725, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 724, "end": 725, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 746, "end": 752, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 749, "end": 752, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 749, "end": 750, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 749, "end": 750, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 759, "end": 807, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 759, "end": 762, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 762, "end": 806, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 764, "end": 806, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 781, "end": 798, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 782, "end": 798, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 784, "end": 798, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 786, "end": 791, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 786, "end": 787, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 787, "end": 790, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 789, "end": 790, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 789, "end": 790, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 792, "end": 796, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 792, "end": 793, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 793, "end": 796, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 795, "end": 796, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 795, "end": 796, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 764, "end": 780, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 765, "end": 779, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 765, "end": 766, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 775, "end": 779, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 775, "end": 779, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 800, "end": 806, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 803, "end": 806, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 803, "end": 804, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 803, "end": 804, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 822, "end": 875, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 832, "end": 833, "ctxt": 0 }, "value": "I", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 833, "end": 836, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 834, "end": 835, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 834, "end": 835, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 845, "end": 846, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 845, "end": 846, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 847, "end": 875, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 854, "end": 871, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 854, "end": 855, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 855, "end": 870, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 857, "end": 870, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 858, "end": 862, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 859, "end": 862, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 861, "end": 862, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 861, "end": 862, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 864, "end": 870, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 867, "end": 870, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 867, "end": 868, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 867, "end": 868, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 879, "end": 939, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 889, "end": 891, "ctxt": 0 }, "value": "I2", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 891, "end": 894, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 892, "end": 893, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 892, "end": 893, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 903, "end": 904, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 903, "end": 904, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 905, "end": 939, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 912, "end": 935, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 912, "end": 914, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 914, "end": 934, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 916, "end": 934, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 917, "end": 921, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 918, "end": 921, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 920, "end": 921, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 920, "end": 921, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 923, "end": 934, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 926, "end": 934, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 926, "end": 932, "ctxt": 0 }, "kind": "string" } } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 943, "end": 995, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 953, "end": 955, "ctxt": 0 }, "value": "I3", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 955, "end": 958, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 956, "end": 957, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 956, "end": 957, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 967, "end": 968, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 967, "end": 968, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 969, "end": 995, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 976, "end": 992, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 976, "end": 978, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 978, "end": 991, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 980, "end": 991, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 981, "end": 985, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 982, "end": 985, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 984, "end": 985, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 984, "end": 985, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 987, "end": 991, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 990, "end": 991, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 990, "end": 991, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 999, "end": 1066, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1009, "end": 1011, "ctxt": 0 }, "value": "I4", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1011, "end": 1014, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1012, "end": 1013, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1012, "end": 1013, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1023, "end": 1024, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1023, "end": 1024, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1025, "end": 1066, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1032, "end": 1062, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1032, "end": 1034, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1034, "end": 1061, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1036, "end": 1061, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1040, "end": 1044, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1041, "end": 1044, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1043, "end": 1044, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1043, "end": 1044, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 1046, "end": 1050, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1047, "end": 1050, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1049, "end": 1050, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1049, "end": 1050, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1036, "end": 1039, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1037, "end": 1038, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1037, "end": 1038, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1052, "end": 1061, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 1055, "end": 1061, "ctxt": 0 }, "kind": "string" } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1070, "end": 1138, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1080, "end": 1082, "ctxt": 0 }, "value": "I5", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1082, "end": 1085, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1083, "end": 1084, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1083, "end": 1084, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1094, "end": 1095, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1094, "end": 1095, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1096, "end": 1138, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1103, "end": 1134, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1103, "end": 1105, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1105, "end": 1133, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1107, "end": 1133, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1111, "end": 1127, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1112, "end": 1127, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1114, "end": 1127, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1115, "end": 1121, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1118, "end": 1121, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1120, "end": 1121, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1120, "end": 1121, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1123, "end": 1127, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1126, "end": 1127, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1126, "end": 1127, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1107, "end": 1110, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1108, "end": 1109, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1108, "end": 1109, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1129, "end": 1133, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1132, "end": 1133, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1132, "end": 1133, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1142, "end": 1234, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1152, "end": 1154, "ctxt": 0 }, "value": "I7", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1154, "end": 1157, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1155, "end": 1156, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1155, "end": 1156, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1166, "end": 1167, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1166, "end": 1167, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1168, "end": 1234, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1175, "end": 1230, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1175, "end": 1178, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1178, "end": 1229, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1180, "end": 1229, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1184, "end": 1197, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1185, "end": 1197, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1187, "end": 1197, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1189, "end": 1195, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1189, "end": 1192, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1192, "end": 1195, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1194, "end": 1195, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1194, "end": 1195, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 1199, "end": 1220, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1200, "end": 1220, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1202, "end": 1220, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1204, "end": 1211, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1204, "end": 1207, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1207, "end": 1210, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1209, "end": 1210, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1209, "end": 1210, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1212, "end": 1218, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1212, "end": 1215, "ctxt": 0 }, "value": "bar", "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": "U", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1180, "end": 1183, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1181, "end": 1182, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1181, "end": 1182, "ctxt": 0 }, "value": "U", "optional": false }, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1222, "end": 1229, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1225, "end": 1229, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1225, "end": 1229, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } } } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 1238, "end": 1307, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1248, "end": 1250, "ctxt": 0 }, "value": "I9", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1250, "end": 1253, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1251, "end": 1252, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1251, "end": 1252, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 1262, "end": 1263, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 1262, "end": 1263, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 1264, "end": 1307, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1271, "end": 1303, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1271, "end": 1274, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1274, "end": 1302, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 1276, "end": 1302, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1277, "end": 1294, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1278, "end": 1294, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1280, "end": 1294, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1282, "end": 1287, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1282, "end": 1283, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1283, "end": 1286, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1285, "end": 1286, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1285, "end": 1286, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1288, "end": 1292, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1288, "end": 1289, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1289, "end": 1292, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1291, "end": 1292, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1291, "end": 1292, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1296, "end": 1302, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 1299, "end": 1302, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 1299, "end": 1300, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1299, "end": 1300, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } }, "typeParams": null } ] } } ], "interpreter": null }