{ "type": "Script", "span": { "start": 69, "end": 1311, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 75, "end": 79, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 69, "end": 96, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 82, "end": 94, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 82, "end": 85, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 85, "end": 93, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 87, "end": 93, "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": 103, "end": 110, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 97, "end": 140, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 126, "end": 138, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 126, "end": 129, "ctxt": 0 }, "value": "bar", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 129, "end": 137, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 131, "end": 137, "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": 119, "end": 123, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 147, "end": 155, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "span": { "start": 141, "end": 188, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 174, "end": 186, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 174, "end": 177, "ctxt": 0 }, "value": "baz", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 177, "end": 185, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 179, "end": 185, "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": 164, "end": 171, "ctxt": 0 }, "value": "Derived", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsModuleDeclaration", "span": { "start": 190, "end": 714, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 197, "end": 214, "ctxt": 0 }, "value": "TargetHasOptional", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 215, "end": 714, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 236, "end": 274, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 246, "end": 247, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 248, "end": 274, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 258, "end": 268, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 258, "end": 261, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 262, "end": 268, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 264, "end": 268, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 264, "end": 268, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 279, "end": 288, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 283, "end": 287, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 283, "end": 284, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 284, "end": 287, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 286, "end": 287, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 286, "end": 287, "ctxt": 0 }, "value": "C", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 294, "end": 316, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 298, "end": 316, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 298, "end": 299, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 299, "end": 316, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 301, "end": 316, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 303, "end": 314, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 303, "end": 306, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 307, "end": 313, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 309, "end": 313, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 309, "end": 313, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 321, "end": 358, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 325, "end": 358, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 325, "end": 326, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 326, "end": 336, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeQuery", "span": { "start": 328, "end": 336, "ctxt": 0 }, "exprName": { "type": "Identifier", "span": { "start": 335, "end": 336, "ctxt": 0 }, "value": "a", "optional": false }, "typeArguments": null } } }, "init": { "type": "ObjectExpression", "span": { "start": 339, "end": 358, "ctxt": 0 }, "properties": [ { "type": "KeyValueProperty", "key": { "type": "Identifier", "span": { "start": 341, "end": 344, "ctxt": 0 }, "value": "opt", "optional": false }, "value": { "type": "NewExpression", "span": { "start": 346, "end": 356, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 350, "end": 354, "ctxt": 0 }, "value": "Base", "optional": false }, "arguments": [], "typeArguments": null } } ] }, "definite": false } ] }, { "type": "TsInterfaceDeclaration", "span": { "start": 379, "end": 417, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 389, "end": 390, "ctxt": 0 }, "value": "D", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 391, "end": 417, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 401, "end": 411, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 401, "end": 404, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 404, "end": 410, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 406, "end": 410, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 406, "end": 410, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 422, "end": 463, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 432, "end": 433, "ctxt": 0 }, "value": "E", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 434, "end": 463, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 444, "end": 457, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 444, "end": 447, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 447, "end": 456, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 449, "end": 456, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 449, "end": 456, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 468, "end": 510, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 478, "end": 479, "ctxt": 0 }, "value": "F", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 480, "end": 510, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 490, "end": 504, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 490, "end": 493, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 494, "end": 503, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 496, "end": 503, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 496, "end": 503, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 515, "end": 524, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 519, "end": 523, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 519, "end": 520, "ctxt": 0 }, "value": "d", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 520, "end": 523, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 522, "end": 523, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 522, "end": 523, "ctxt": 0 }, "value": "D", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 529, "end": 538, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 533, "end": 537, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 533, "end": 534, "ctxt": 0 }, "value": "e", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 534, "end": 537, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 536, "end": 537, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 536, "end": 537, "ctxt": 0 }, "value": "E", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 543, "end": 552, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 547, "end": 551, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 547, "end": 548, "ctxt": 0 }, "value": "f", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 548, "end": 551, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 550, "end": 551, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 550, "end": 551, "ctxt": 0 }, "value": "F", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 572, "end": 578, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 572, "end": 577, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 572, "end": 573, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 576, "end": 577, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 583, "end": 589, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 583, "end": 588, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 583, "end": 584, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 587, "end": 588, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 594, "end": 600, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 594, "end": 599, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 594, "end": 595, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 598, "end": 599, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 605, "end": 611, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 605, "end": 610, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 605, "end": 606, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 609, "end": 610, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 617, "end": 623, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 617, "end": 622, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 617, "end": 618, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 621, "end": 622, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 628, "end": 634, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 628, "end": 633, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 628, "end": 629, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 632, "end": 633, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 639, "end": 645, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 639, "end": 644, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 639, "end": 640, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 643, "end": 644, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 650, "end": 656, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 650, "end": 655, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 650, "end": 651, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 654, "end": 655, "ctxt": 0 }, "value": "c", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 662, "end": 668, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 662, "end": 667, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 662, "end": 663, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 666, "end": 667, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 673, "end": 679, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 673, "end": 678, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 673, "end": 674, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 677, "end": 678, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 684, "end": 690, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 684, "end": 689, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 684, "end": 685, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 688, "end": 689, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 695, "end": 701, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 695, "end": 700, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 695, "end": 696, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 699, "end": 700, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 706, "end": 712, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 706, "end": 711, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 706, "end": 707, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 710, "end": 711, "ctxt": 0 }, "value": "c", "optional": false } } } ] } }, { "type": "TsModuleDeclaration", "span": { "start": 716, "end": 1311, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 723, "end": 740, "ctxt": 0 }, "value": "SourceHasOptional", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 741, "end": 1311, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 762, "end": 799, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 772, "end": 773, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 774, "end": 799, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 784, "end": 793, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 784, "end": 787, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 787, "end": 793, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 789, "end": 793, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 789, "end": 793, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 804, "end": 813, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 808, "end": 812, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 808, "end": 809, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 809, "end": 812, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 811, "end": 812, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 811, "end": 812, "ctxt": 0 }, "value": "C", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 819, "end": 840, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 823, "end": 840, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 823, "end": 824, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 824, "end": 840, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 826, "end": 840, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 828, "end": 838, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 828, "end": 831, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 831, "end": 837, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 833, "end": 837, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 833, "end": 837, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 845, "end": 872, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 849, "end": 872, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 849, "end": 850, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "init": { "type": "ObjectExpression", "span": { "start": 853, "end": 872, "ctxt": 0 }, "properties": [ { "type": "KeyValueProperty", "key": { "type": "Identifier", "span": { "start": 855, "end": 858, "ctxt": 0 }, "value": "opt", "optional": false }, "value": { "type": "NewExpression", "span": { "start": 860, "end": 870, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 864, "end": 868, "ctxt": 0 }, "value": "Base", "optional": false }, "arguments": [], "typeArguments": null } } ] }, "definite": false } ] }, { "type": "TsInterfaceDeclaration", "span": { "start": 893, "end": 932, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 903, "end": 904, "ctxt": 0 }, "value": "D", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 905, "end": 932, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 915, "end": 926, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 915, "end": 918, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 919, "end": 925, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 921, "end": 925, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 921, "end": 925, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 937, "end": 979, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 947, "end": 948, "ctxt": 0 }, "value": "E", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 949, "end": 979, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 959, "end": 973, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 959, "end": 962, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": true, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 963, "end": 972, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 965, "end": 972, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 965, "end": 972, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 984, "end": 1025, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 994, "end": 995, "ctxt": 0 }, "value": "F", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 996, "end": 1025, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 1006, "end": 1019, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1006, "end": 1009, "ctxt": 0 }, "value": "opt", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1009, "end": 1018, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1011, "end": 1018, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1011, "end": 1018, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 1030, "end": 1039, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1034, "end": 1038, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1034, "end": 1035, "ctxt": 0 }, "value": "d", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1035, "end": 1038, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1037, "end": 1038, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1037, "end": 1038, "ctxt": 0 }, "value": "D", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 1044, "end": 1053, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1048, "end": 1052, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1048, "end": 1049, "ctxt": 0 }, "value": "e", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1049, "end": 1052, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1051, "end": 1052, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1051, "end": 1052, "ctxt": 0 }, "value": "E", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 1058, "end": 1067, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1062, "end": 1066, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1062, "end": 1063, "ctxt": 0 }, "value": "f", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1063, "end": 1066, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1065, "end": 1066, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1065, "end": 1066, "ctxt": 0 }, "value": "F", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1073, "end": 1079, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1073, "end": 1078, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1073, "end": 1074, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1077, "end": 1078, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1093, "end": 1099, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1093, "end": 1098, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1093, "end": 1094, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1097, "end": 1098, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1113, "end": 1119, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1113, "end": 1118, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1113, "end": 1114, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1117, "end": 1118, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1130, "end": 1136, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1130, "end": 1135, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1130, "end": 1131, "ctxt": 0 }, "value": "c", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1134, "end": 1135, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1148, "end": 1154, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1148, "end": 1153, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1148, "end": 1149, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1152, "end": 1153, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1168, "end": 1174, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1168, "end": 1173, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1168, "end": 1169, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1172, "end": 1173, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1188, "end": 1194, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1188, "end": 1193, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1188, "end": 1189, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1192, "end": 1193, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1205, "end": 1211, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1205, "end": 1210, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1205, "end": 1206, "ctxt": 0 }, "value": "a", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1209, "end": 1210, "ctxt": 0 }, "value": "c", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1223, "end": 1229, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1223, "end": 1228, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1223, "end": 1224, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1227, "end": 1228, "ctxt": 0 }, "value": "d", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1243, "end": 1249, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1243, "end": 1248, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1243, "end": 1244, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1247, "end": 1248, "ctxt": 0 }, "value": "e", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1263, "end": 1269, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1263, "end": 1268, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1263, "end": 1264, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1267, "end": 1268, "ctxt": 0 }, "value": "f", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1280, "end": 1286, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1280, "end": 1285, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1280, "end": 1281, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1284, "end": 1285, "ctxt": 0 }, "value": "a", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1297, "end": 1303, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1297, "end": 1302, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1297, "end": 1298, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "Identifier", "span": { "start": 1301, "end": 1302, "ctxt": 0 }, "value": "c", "optional": false } } } ] } } ], "interpreter": null }