{ "type": "Script", "span": { "start": 68, "end": 1310, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 74, "end": 78, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 68, "end": 95, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 81, "end": 93, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 81, "end": 84, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 84, "end": 92, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 86, "end": 92, "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": 102, "end": 109, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 96, "end": 139, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 125, "end": 137, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 125, "end": 128, "ctxt": 0 }, "value": "bar", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 128, "end": 136, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 130, "end": 136, "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": 118, "end": 122, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 146, "end": 154, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "span": { "start": 140, "end": 187, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 173, "end": 185, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 173, "end": 176, "ctxt": 0 }, "value": "baz", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 176, "end": 184, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 178, "end": 184, "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": 163, "end": 170, "ctxt": 0 }, "value": "Derived", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsModuleDeclaration", "span": { "start": 189, "end": 713, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 196, "end": 213, "ctxt": 0 }, "value": "TargetHasOptional", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 214, "end": 713, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 235, "end": 273, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 245, "end": 246, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 247, "end": 273, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 257, "end": 267, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 257, "end": 260, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 261, "end": 267, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 263, "end": 267, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 263, "end": 267, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 278, "end": 287, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 282, "end": 286, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 282, "end": 283, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 283, "end": 286, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 285, "end": 286, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 285, "end": 286, "ctxt": 0 }, "value": "C", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 293, "end": 315, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 297, "end": 315, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 297, "end": 298, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 298, "end": 315, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 300, "end": 315, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 302, "end": 313, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 302, "end": 305, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 306, "end": 312, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 308, "end": 312, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 308, "end": 312, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 320, "end": 357, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 324, "end": 357, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 324, "end": 325, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 325, "end": 335, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeQuery", "span": { "start": 327, "end": 335, "ctxt": 0 }, "exprName": { "type": "Identifier", "span": { "start": 334, "end": 335, "ctxt": 0 }, "value": "a", "optional": false }, "typeArguments": null } } }, "init": { "type": "ObjectExpression", "span": { "start": 338, "end": 357, "ctxt": 0 }, "properties": [ { "type": "KeyValueProperty", "key": { "type": "Identifier", "span": { "start": 340, "end": 343, "ctxt": 0 }, "value": "opt", "optional": false }, "value": { "type": "NewExpression", "span": { "start": 345, "end": 355, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 349, "end": 353, "ctxt": 0 }, "value": "Base", "optional": false }, "arguments": [], "typeArguments": null } } ] }, "definite": false } ] }, { "type": "TsInterfaceDeclaration", "span": { "start": 378, "end": 416, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 388, "end": 389, "ctxt": 0 }, "value": "D", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 390, "end": 416, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 400, "end": 410, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 400, "end": 403, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 403, "end": 409, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 405, "end": 409, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 405, "end": 409, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 421, "end": 462, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 431, "end": 432, "ctxt": 0 }, "value": "E", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 433, "end": 462, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 443, "end": 456, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 443, "end": 446, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 446, "end": 455, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 448, "end": 455, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 448, "end": 455, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 467, "end": 509, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 477, "end": 478, "ctxt": 0 }, "value": "F", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 479, "end": 509, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 489, "end": 503, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 489, "end": 492, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 493, "end": 502, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 495, "end": 502, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 495, "end": 502, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 514, "end": 523, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 518, "end": 522, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 518, "end": 519, "ctxt": 0 }, "value": "d", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 519, "end": 522, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 521, "end": 522, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 521, "end": 522, "ctxt": 0 }, "value": "D", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 528, "end": 537, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 532, "end": 536, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 532, "end": 533, "ctxt": 0 }, "value": "e", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 533, "end": 536, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 535, "end": 536, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 535, "end": 536, "ctxt": 0 }, "value": "E", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 542, "end": 551, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 546, "end": 550, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 546, "end": 547, "ctxt": 0 }, "value": "f", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 547, "end": 550, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 549, "end": 550, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 549, "end": 550, "ctxt": 0 }, "value": "F", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 571, "end": 577, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 571, "end": 576, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 571, "end": 572, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 575, "end": 576, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 582, "end": 588, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 582, "end": 587, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 582, "end": 583, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 586, "end": 587, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 593, "end": 599, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 593, "end": 598, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 593, "end": 594, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 597, "end": 598, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 604, "end": 610, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 604, "end": 609, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 604, "end": 605, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 608, "end": 609, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 616, "end": 622, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 616, "end": 621, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 616, "end": 617, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 620, "end": 621, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 627, "end": 633, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 627, "end": 632, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 627, "end": 628, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 631, "end": 632, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 638, "end": 644, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 638, "end": 643, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 638, "end": 639, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 642, "end": 643, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 649, "end": 655, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 649, "end": 654, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 649, "end": 650, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 653, "end": 654, "ctxt": 0 }, "value": "c", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 661, "end": 667, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 661, "end": 666, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 661, "end": 662, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 665, "end": 666, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 672, "end": 678, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 672, "end": 677, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 672, "end": 673, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 676, "end": 677, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 683, "end": 689, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 683, "end": 688, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 683, "end": 684, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 687, "end": 688, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 694, "end": 700, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 694, "end": 699, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 694, "end": 695, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 698, "end": 699, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 705, "end": 711, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 705, "end": 710, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 705, "end": 706, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 709, "end": 710, "ctxt": 0 }, "value": "c", "optional": false } } } ] } }, { "type": "TsModuleDeclaration", "span": { "start": 715, "end": 1310, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 722, "end": 739, "ctxt": 0 }, "value": "SourceHasOptional", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 740, "end": 1310, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 761, "end": 798, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 771, "end": 772, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 773, "end": 798, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 783, "end": 792, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 783, "end": 786, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 786, "end": 792, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 788, "end": 792, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 788, "end": 792, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 803, "end": 812, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 807, "end": 811, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 807, "end": 808, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 808, "end": 811, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 810, "end": 811, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 810, "end": 811, "ctxt": 0 }, "value": "C", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 818, "end": 839, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 822, "end": 839, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 822, "end": 823, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 823, "end": 839, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 825, "end": 839, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 827, "end": 837, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 827, "end": 830, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 830, "end": 836, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 832, "end": 836, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 832, "end": 836, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 844, "end": 871, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 848, "end": 871, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 848, "end": 849, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "init": { "type": "ObjectExpression", "span": { "start": 852, "end": 871, "ctxt": 0 }, "properties": [ { "type": "KeyValueProperty", "key": { "type": "Identifier", "span": { "start": 854, "end": 857, "ctxt": 0 }, "value": "opt", "optional": false }, "value": { "type": "NewExpression", "span": { "start": 859, "end": 869, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 863, "end": 867, "ctxt": 0 }, "value": "Base", "optional": false }, "arguments": [], "typeArguments": null } } ] }, "definite": false } ] }, { "type": "TsInterfaceDeclaration", "span": { "start": 892, "end": 931, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 902, "end": 903, "ctxt": 0 }, "value": "D", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 904, "end": 931, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 914, "end": 925, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 914, "end": 917, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 918, "end": 924, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 920, "end": 924, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 920, "end": 924, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 936, "end": 978, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 946, "end": 947, "ctxt": 0 }, "value": "E", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 948, "end": 978, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 958, "end": 972, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 958, "end": 961, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 962, "end": 971, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 964, "end": 971, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 964, "end": 971, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 983, "end": 1024, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 993, "end": 994, "ctxt": 0 }, "value": "F", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 995, "end": 1024, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1005, "end": 1018, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1005, "end": 1008, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1008, "end": 1017, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1010, "end": 1017, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1010, "end": 1017, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 1029, "end": 1038, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1033, "end": 1037, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1033, "end": 1034, "ctxt": 0 }, "value": "d", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1034, "end": 1037, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1036, "end": 1037, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1036, "end": 1037, "ctxt": 0 }, "value": "D", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 1043, "end": 1052, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1047, "end": 1051, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1047, "end": 1048, "ctxt": 0 }, "value": "e", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1048, "end": 1051, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1050, "end": 1051, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1050, "end": 1051, "ctxt": 0 }, "value": "E", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 1057, "end": 1066, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1061, "end": 1065, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1061, "end": 1062, "ctxt": 0 }, "value": "f", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1062, "end": 1065, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1064, "end": 1065, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1064, "end": 1065, "ctxt": 0 }, "value": "F", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1072, "end": 1078, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1072, "end": 1077, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1072, "end": 1073, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1076, "end": 1077, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1092, "end": 1098, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1092, "end": 1097, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1092, "end": 1093, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1096, "end": 1097, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1112, "end": 1118, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1112, "end": 1117, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1112, "end": 1113, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1116, "end": 1117, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1129, "end": 1135, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1129, "end": 1134, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1129, "end": 1130, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1133, "end": 1134, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1147, "end": 1153, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1147, "end": 1152, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1147, "end": 1148, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1151, "end": 1152, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1167, "end": 1173, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1167, "end": 1172, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1167, "end": 1168, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1171, "end": 1172, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1187, "end": 1193, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1187, "end": 1192, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1187, "end": 1188, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1191, "end": 1192, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1204, "end": 1210, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1204, "end": 1209, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1204, "end": 1205, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1208, "end": 1209, "ctxt": 0 }, "value": "c", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1222, "end": 1228, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1222, "end": 1227, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1222, "end": 1223, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1226, "end": 1227, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1242, "end": 1248, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1242, "end": 1247, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1242, "end": 1243, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1246, "end": 1247, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1262, "end": 1268, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1262, "end": 1267, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1262, "end": 1263, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1266, "end": 1267, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1279, "end": 1285, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1279, "end": 1284, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1279, "end": 1280, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1283, "end": 1284, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1296, "end": 1302, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1296, "end": 1301, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1296, "end": 1297, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1300, "end": 1301, "ctxt": 0 }, "value": "c", "optional": false } } } ] } } ], "interpreter": null }