{ "type": "Script", "span": { "start": 64, "end": 938, "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": "TsInterfaceDeclaration", "span": { "start": 201, "end": 244, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 211, "end": 212, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 213, "end": 244, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 221, "end": 230, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 222, "end": 230, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 224, "end": 230, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 231, "end": 240, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 233, "end": 240, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 233, "end": 240, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 220, "end": 241, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 248, "end": 307, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 258, "end": 259, "ctxt": 0 }, "value": "B", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 268, "end": 269, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 268, "end": 269, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 270, "end": 307, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 278, "end": 287, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 279, "end": 287, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 281, "end": 287, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 288, "end": 294, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 290, "end": 294, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 290, "end": 294, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 277, "end": 295, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 311, "end": 372, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 321, "end": 323, "ctxt": 0 }, "value": "B2", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 332, "end": 333, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 332, "end": 333, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": null } ], "body": { "type": "TsInterfaceBody", "span": { "start": 334, "end": 372, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 342, "end": 351, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 343, "end": 351, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 345, "end": 351, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 352, "end": 362, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 354, "end": 362, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 354, "end": 362, "ctxt": 0 }, "value": "Derived2", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 341, "end": 363, "ctxt": 0 } } ] } }, { "type": "TsModuleDeclaration", "span": { "start": 376, "end": 938, "ctxt": 0 }, "declare": false, "global": false, "id": { "type": "Identifier", "span": { "start": 383, "end": 391, "ctxt": 0 }, "value": "Generics", "optional": false }, "body": { "type": "TsModuleBlock", "span": { "start": 392, "end": 938, "ctxt": 0 }, "body": [ { "type": "TsInterfaceDeclaration", "span": { "start": 399, "end": 463, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 409, "end": 410, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 410, "end": 429, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 411, "end": 428, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 411, "end": 412, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 421, "end": 428, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 421, "end": 428, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null }, "default": null } ] }, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 430, "end": 463, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 442, "end": 451, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 443, "end": 451, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 445, "end": 451, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 452, "end": 455, "ctxt": 0 }, "typeAnnotation": { "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 } }, "readonly": false, "static": false, "span": { "start": 441, "end": 456, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 471, "end": 547, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 481, "end": 482, "ctxt": 0 }, "value": "B", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 491, "end": 498, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 491, "end": 492, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": { "type": "TsTypeParameterInstantiation", "span": { "start": 492, "end": 498, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 493, "end": 497, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 493, "end": 497, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } ] } } ], "body": { "type": "TsInterfaceBody", "span": { "start": 499, "end": 547, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 511, "end": 520, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 512, "end": 520, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 514, "end": 520, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 521, "end": 530, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 523, "end": 530, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 523, "end": 530, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 510, "end": 531, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 555, "end": 633, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 565, "end": 567, "ctxt": 0 }, "value": "B2", "optional": false }, "declare": false, "typeParams": null, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 576, "end": 586, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 576, "end": 577, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": { "type": "TsTypeParameterInstantiation", "span": { "start": 577, "end": 586, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 578, "end": 585, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 578, "end": 585, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } ] } } ], "body": { "type": "TsInterfaceBody", "span": { "start": 587, "end": 633, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 599, "end": 608, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 600, "end": 608, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 602, "end": 608, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 609, "end": 619, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 611, "end": 619, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 611, "end": 619, "ctxt": 0 }, "value": "Derived2", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 598, "end": 620, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 641, "end": 731, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 651, "end": 653, "ctxt": 0 }, "value": "B3", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 653, "end": 672, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 654, "end": 671, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 654, "end": 655, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 664, "end": 671, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 664, "end": 671, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null }, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 681, "end": 685, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 681, "end": 682, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": { "type": "TsTypeParameterInstantiation", "span": { "start": 682, "end": 685, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 683, "end": 684, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 683, "end": 684, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] } } ], "body": { "type": "TsInterfaceBody", "span": { "start": 686, "end": 731, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 698, "end": 707, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 699, "end": 707, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 701, "end": 707, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 708, "end": 714, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 710, "end": 714, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 710, "end": 714, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 697, "end": 715, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 739, "end": 832, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 749, "end": 751, "ctxt": 0 }, "value": "B4", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 751, "end": 770, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 752, "end": 769, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 752, "end": 753, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 762, "end": 769, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 762, "end": 769, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null }, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 779, "end": 783, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 779, "end": 780, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": { "type": "TsTypeParameterInstantiation", "span": { "start": 780, "end": 783, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 781, "end": 782, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 781, "end": 782, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] } } ], "body": { "type": "TsInterfaceBody", "span": { "start": 784, "end": 832, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 796, "end": 805, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 797, "end": 805, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 799, "end": 805, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 806, "end": 815, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 808, "end": 815, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 808, "end": 815, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 795, "end": 816, "ctxt": 0 } } ] } }, { "type": "TsInterfaceDeclaration", "span": { "start": 840, "end": 935, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 850, "end": 852, "ctxt": 0 }, "value": "B5", "optional": false }, "declare": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 852, "end": 872, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 853, "end": 871, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 853, "end": 854, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": { "type": "TsTypeReference", "span": { "start": 863, "end": 871, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 863, "end": 871, "ctxt": 0 }, "value": "Derived2", "optional": false }, "typeParams": null }, "default": null } ] }, "extends": [ { "type": "TsExpressionWithTypeArguments", "span": { "start": 881, "end": 885, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 881, "end": 882, "ctxt": 0 }, "value": "A", "optional": false }, "typeArguments": { "type": "TsTypeParameterInstantiation", "span": { "start": 882, "end": 885, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 883, "end": 884, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 883, "end": 884, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] } } ], "body": { "type": "TsInterfaceBody", "span": { "start": 886, "end": 935, "ctxt": 0 }, "body": [ { "type": "TsIndexSignature", "params": [ { "type": "Identifier", "span": { "start": 898, "end": 907, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 899, "end": 907, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 901, "end": 907, "ctxt": 0 }, "kind": "string" } } } ], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 908, "end": 918, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 910, "end": 918, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 910, "end": 918, "ctxt": 0 }, "value": "Derived2", "optional": false }, "typeParams": null } }, "readonly": false, "static": false, "span": { "start": 897, "end": 919, "ctxt": 0 } } ] } } ] } } ], "interpreter": null }