{ "type": "Script", "span": { "start": 64, "end": 566, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 64, "end": 95, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 74, "end": 78, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 79, "end": 95, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 81, "end": 93, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 81, "end": 84, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 84, "end": 92, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 86, "end": 92, "ctxt": 0 }, "kind": "string" } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 97, "end": 144, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 107, "end": 114, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 123, "end": 127, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 123, "end": 127, "ctxt": 0 }, "value": "Base", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 128, "end": 144, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 130, "end": 142, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 130, "end": 133, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 133, "end": 141, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 135, "end": 141, "ctxt": 0 }, "kind": "string" } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 146, "end": 197, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 156, "end": 164, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 173, "end": 180, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 173, "end": 180, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 181, "end": 197, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 183, "end": 195, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 183, "end": 186, "ctxt": 0 }, "value": "baz", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 186, "end": 194, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 188, "end": 194, "ctxt": 0 }, "kind": "string" } }, "typeParams": null } ] } }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 207, "end": 208, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "span": { "start": 201, "end": 240, "ctxt": 0 }, "decorators": [], "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 217, "end": 226, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 218, "end": 226, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 220, "end": 226, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 227, "end": 236, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 229, "end": 236, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 229, "end": 236, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 216, "end": 237, "ctxt": 0 } } ], "superClass": null, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 250, "end": 251, "ctxt": 0 }, "value": "B", "optional": false }, "declare": false, "span": { "start": 244, "end": 301, "ctxt": 0 }, "decorators": [], "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 270, "end": 279, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 271, "end": 279, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 273, "end": 279, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 280, "end": 288, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 282, "end": 288, "ctxt": 0 }, "kind": "string" } }, "readonly": false, "static": false, "span": { "start": 269, "end": 289, "ctxt": 0 } } ], "superClass": { "type": "Identifier", "span": { "start": 260, "end": 261, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsModuleDeclaration", "span": { "start": 305, "end": 566, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 312, "end": 320, "ctxt": 0 }, "value": "Generics", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 321, "end": 566, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 334, "end": 335, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "span": { "start": 328, "end": 388, "ctxt": 0 }, "decorators": [], "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 367, "end": 376, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 368, "end": 376, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 370, "end": 376, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 377, "end": 380, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 379, "end": 380, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 379, "end": 380, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 366, "end": 381, "ctxt": 0 } } ], "superClass": null, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 335, "end": 354, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 336, "end": 353, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 336, "end": 337, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 346, "end": 353, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 346, "end": 353, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null }, "default": null } ] }, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 402, "end": 403, "ctxt": 0 }, "value": "B", "optional": false }, "declare": false, "span": { "start": 396, "end": 467, "ctxt": 0 }, "decorators": [], "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 432, "end": 441, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 433, "end": 441, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 435, "end": 441, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 442, "end": 450, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 444, "end": 450, "ctxt": 0 }, "kind": "string" } }, "readonly": false, "static": false, "span": { "start": 431, "end": 451, "ctxt": 0 } } ], "superClass": { "type": "Identifier", "span": { "start": 412, "end": 413, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 413, "end": 419, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 414, "end": 418, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 414, "end": 418, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 481, "end": 483, "ctxt": 0 }, "value": "B3", "optional": false }, "declare": false, "span": { "start": 475, "end": 563, "ctxt": 0 }, "decorators": [], "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 528, "end": 537, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 529, "end": 537, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 531, "end": 537, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 538, "end": 546, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 540, "end": 546, "ctxt": 0 }, "kind": "string" } }, "readonly": false, "static": false, "span": { "start": 527, "end": 547, "ctxt": 0 } } ], "superClass": { "type": "Identifier", "span": { "start": 511, "end": 512, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 483, "end": 502, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 484, "end": 501, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 484, "end": 485, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 494, "end": 501, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 494, "end": 501, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null }, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 512, "end": 515, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 513, "end": 514, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 513, "end": 514, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] } ] } } ], "interpreter": null }