swc/crates/swc_ecma_parser/tests/tsc/callSignatureAssignabilityInInheritance3.json

6944 lines
309 KiB
JSON
Raw Normal View History

{
"type": "Script",
"span": {
"start": 117,
"end": 4356,
"ctxt": 0
},
"body": [
{
"type": "TsModuleDeclaration",
"span": {
"start": 117,
"end": 4356,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 124,
"end": 130,
"ctxt": 0
},
"value": "Errors",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 131,
"end": 4356,
"ctxt": 0
},
"body": [
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 143,
"end": 147,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"span": {
"start": 137,
"end": 164,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 150,
"end": 162,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 150,
"end": 153,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 153,
"end": 161,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 155,
"end": 161,
"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": 175,
"end": 182,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"declare": false,
"span": {
"start": 169,
"end": 212,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 198,
"end": 210,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 198,
"end": 201,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 201,
"end": 209,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 203,
"end": 209,
"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": 191,
"end": 195,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 223,
"end": 231,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"declare": false,
"span": {
"start": 217,
"end": 264,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 250,
"end": 262,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 250,
"end": 253,
"ctxt": 0
},
"value": "baz",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 253,
"end": 261,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 255,
"end": 261,
"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": 240,
"end": 247,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 275,
"end": 287,
"ctxt": 0
},
"value": "OtherDerived",
"optional": false
},
"declare": false,
"span": {
"start": 269,
"end": 318,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 303,
"end": 316,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 303,
"end": 307,
"ctxt": 0
},
"value": "bing",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 307,
"end": 315,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 309,
"end": 315,
"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": 296,
"end": 300,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "TsModuleDeclaration",
"span": {
"start": 324,
"end": 3889,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 331,
"end": 365,
"ctxt": 0
},
"value": "WithNonGenericSignaturesInBaseType",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 366,
"end": 3889,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 430,
"end": 1767,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 440,
"end": 441,
"ctxt": 0
},
"value": "A",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 442,
"end": 1767,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 456,
"end": 484,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 456,
"end": 458,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 458,
"end": 483,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 460,
"end": 483,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 461,
"end": 470,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 462,
"end": 470,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 464,
"end": 470,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 472,
"end": 483,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 475,
"end": 483,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 475,
"end": 481,
"ctxt": 0
},
"kind": "string"
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 497,
"end": 554,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 497,
"end": 499,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 499,
"end": 553,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 501,
"end": 553,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 502,
"end": 527,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 503,
"end": 527,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 505,
"end": 527,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 506,
"end": 515,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 509,
"end": 515,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 511,
"end": 515,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 511,
"end": 515,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 517,
"end": 527,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 520,
"end": 527,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 520,
"end": 527,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 529,
"end": 553,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 532,
"end": 553,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 533,
"end": 540,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 534,
"end": 540,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 536,
"end": 540,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 536,
"end": 540,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 542,
"end": 553,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 545,
"end": 553,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 545,
"end": 553,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 567,
"end": 651,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 567,
"end": 569,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 569,
"end": 650,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 571,
"end": 650,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 572,
"end": 597,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 573,
"end": 597,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 575,
"end": 597,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 576,
"end": 585,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 579,
"end": 585,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 581,
"end": 585,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 581,
"end": 585,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 587,
"end": 597,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 590,
"end": 597,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 590,
"end": 597,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 599,
"end": 625,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 600,
"end": 625,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 602,
"end": 625,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 603,
"end": 613,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 607,
"end": 613,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 609,
"end": 613,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 609,
"end": 613,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 615,
"end": 625,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 618,
"end": 625,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 618,
"end": 625,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 627,
"end": 650,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 630,
"end": 650,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 631,
"end": 638,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 632,
"end": 638,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 634,
"end": 638,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 634,
"end": 638,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 640,
"end": 650,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 643,
"end": 650,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 643,
"end": 650,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 664,
"end": 692,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 664,
"end": 667,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 667,
"end": 691,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 669,
"end": 691,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 670,
"end": 682,
"ctxt": 0
},
"rest": {
"start": 670,
"end": 673,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 673,
"end": 674,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 674,
"end": 682,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 676,
"end": 682,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 676,
"end": 680,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 676,
"end": 680,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 684,
"end": 691,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 687,
"end": 691,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 687,
"end": 691,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 705,
"end": 772,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 705,
"end": 708,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 708,
"end": 771,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 710,
"end": 771,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 711,
"end": 729,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 712,
"end": 729,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 714,
"end": 729,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 716,
"end": 727,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 716,
"end": 719,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 719,
"end": 727,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 721,
"end": 727,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
},
{
"type": "Identifier",
"span": {
"start": 731,
"end": 762,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 732,
"end": 762,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 734,
"end": 762,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 736,
"end": 748,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 736,
"end": 739,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 739,
"end": 747,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 741,
"end": 747,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 749,
"end": 760,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 749,
"end": 752,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 752,
"end": 760,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 754,
"end": 760,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 764,
"end": 771,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 767,
"end": 771,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 767,
"end": 771,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 785,
"end": 845,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 785,
"end": 788,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 788,
"end": 844,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 790,
"end": 844,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 791,
"end": 805,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 792,
"end": 805,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 794,
"end": 805,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 794,
"end": 799,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 799,
"end": 805,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 800,
"end": 804,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 800,
"end": 804,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 807,
"end": 825,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 808,
"end": 825,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 810,
"end": 825,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 810,
"end": 815,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 815,
"end": 825,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 816,
"end": 824,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 816,
"end": 824,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 827,
"end": 844,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 830,
"end": 844,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 830,
"end": 835,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 835,
"end": 844,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 836,
"end": 843,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 836,
"end": 843,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 858,
"end": 957,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 858,
"end": 861,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 861,
"end": 956,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 863,
"end": 956,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 881,
"end": 903,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 882,
"end": 891,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 883,
"end": 891,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 885,
"end": 891,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 892,
"end": 902,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 894,
"end": 902,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 894,
"end": 900,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": null
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 920,
"end": 942,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 921,
"end": 930,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 922,
"end": 930,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 924,
"end": 930,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 931,
"end": 941,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 933,
"end": 941,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 933,
"end": 939,
"ctxt": 0
},
"kind": "string"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 970,
"end": 1015,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 970,
"end": 973,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 973,
"end": 1014,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 975,
"end": 1014,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 976,
"end": 1003,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 977,
"end": 1003,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 979,
"end": 1003,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 981,
"end": 991,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 981,
"end": 982,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 982,
"end": 990,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 984,
"end": 990,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 992,
"end": 1001,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 992,
"end": 993,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 993,
"end": 1001,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 995,
"end": 1001,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1005,
"end": 1014,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1008,
"end": 1014,
"ctxt": 0
},
"kind": "number"
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1028,
"end": 1430,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1028,
"end": 1031,
"ctxt": 0
},
"value": "a16",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1031,
"end": 1429,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1033,
"end": 1429,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1157,
"end": 1275,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1158,
"end": 1263,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1159,
"end": 1263,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1161,
"end": 1263,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1183,
"end": 1203,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1184,
"end": 1193,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1185,
"end": 1193,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1187,
"end": 1193,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1194,
"end": 1202,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1196,
"end": 1202,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1224,
"end": 1245,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1225,
"end": 1235,
"ctxt": 0
},
"value": "a",
"optional": true,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1227,
"end": 1235,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1229,
"end": 1235,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1236,
"end": 1244,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1238,
"end": 1244,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1264,
"end": 1274,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1266,
"end": 1274,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1266,
"end": 1272,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": null
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1292,
"end": 1415,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1293,
"end": 1402,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1294,
"end": 1402,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1296,
"end": 1402,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1318,
"end": 1340,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1319,
"end": 1329,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1320,
"end": 1329,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1322,
"end": 1329,
"ctxt": 0
},
"kind": "boolean"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1330,
"end": 1339,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1332,
"end": 1339,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1361,
"end": 1384,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1362,
"end": 1373,
"ctxt": 0
},
"value": "a",
"optional": true,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1364,
"end": 1373,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1366,
"end": 1373,
"ctxt": 0
},
"kind": "boolean"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1374,
"end": 1383,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1376,
"end": 1383,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1403,
"end": 1414,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1405,
"end": 1414,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1405,
"end": 1412,
"ctxt": 0
},
"kind": "boolean"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1443,
"end": 1757,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1443,
"end": 1446,
"ctxt": 0
},
"value": "a17",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1446,
"end": 1756,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1448,
"end": 1756,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1466,
"end": 1595,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1467,
"end": 1586,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1468,
"end": 1586,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1470,
"end": 1586,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1492,
"end": 1521,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1512,
"end": 1516,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1513,
"end": 1516,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1515,
"end": 1516,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1515,
"end": 1516,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1517,
"end": 1520,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1519,
"end": 1520,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1519,
"end": 1520,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1492,
"end": 1511,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1493,
"end": 1510,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1493,
"end": 1494,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1503,
"end": 1510,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1503,
"end": 1510,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1542,
"end": 1568,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1559,
"end": 1563,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1560,
"end": 1563,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1562,
"end": 1563,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1562,
"end": 1563,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1564,
"end": 1567,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1566,
"end": 1567,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1566,
"end": 1567,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1542,
"end": 1558,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1543,
"end": 1557,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1543,
"end": 1544,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1553,
"end": 1557,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1553,
"end": 1557,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1587,
"end": 1594,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1589,
"end": 1594,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1589,
"end": 1592,
"ctxt": 0
},
"kind": "any"
}
}
},
"typeParams": null
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1612,
"end": 1742,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1613,
"end": 1733,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1614,
"end": 1733,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1616,
"end": 1733,
"ctxt": 0
},
"members": [
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1638,
"end": 1668,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1659,
"end": 1663,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1660,
"end": 1663,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1662,
"end": 1663,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1662,
"end": 1663,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1664,
"end": 1667,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1666,
"end": 1667,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1666,
"end": 1667,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1638,
"end": 1658,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1639,
"end": 1657,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1639,
"end": 1640,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1649,
"end": 1657,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1649,
"end": 1657,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 1689,
"end": 1715,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1706,
"end": 1710,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1707,
"end": 1710,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1709,
"end": 1710,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1709,
"end": 1710,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1711,
"end": 1714,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1713,
"end": 1714,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1713,
"end": 1714,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1689,
"end": 1705,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1690,
"end": 1704,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1690,
"end": 1691,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1700,
"end": 1704,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1700,
"end": 1704,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1734,
"end": 1741,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1736,
"end": 1741,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1736,
"end": 1739,
"ctxt": 0
},
"kind": "any"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1777,
"end": 1958,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1787,
"end": 1788,
"ctxt": 0
},
"value": "I",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1797,
"end": 1798,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1797,
"end": 1798,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1799,
"end": 1958,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1813,
"end": 1837,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1813,
"end": 1815,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1815,
"end": 1836,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1817,
"end": 1836,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1824,
"end": 1828,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1825,
"end": 1828,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1827,
"end": 1828,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1827,
"end": 1828,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1817,
"end": 1823,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1818,
"end": 1819,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1818,
"end": 1819,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1821,
"end": 1822,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1821,
"end": 1822,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1830,
"end": 1836,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1833,
"end": 1836,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 1833,
"end": 1834,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1833,
"end": 1834,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1968,
"end": 2114,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1978,
"end": 1980,
"ctxt": 0
},
"value": "I2",
"optional": false
},
"declare": false,
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1980,
"end": 1986,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1981,
"end": 1982,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1981,
"end": 1982,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1984,
"end": 1985,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1984,
"end": 1985,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1995,
"end": 1996,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1995,
"end": 1996,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1997,
"end": 2114,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2011,
"end": 2029,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2011,
"end": 2013,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2013,
"end": 2028,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2015,
"end": 2028,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2016,
"end": 2020,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2017,
"end": 2020,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2019,
"end": 2020,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2019,
"end": 2020,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2022,
"end": 2028,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 2025,
"end": 2028,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 2025,
"end": 2026,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2025,
"end": 2026,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2124,
"end": 2333,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2134,
"end": 2136,
"ctxt": 0
},
"value": "I3",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2145,
"end": 2146,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2145,
"end": 2146,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2147,
"end": 2333,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2230,
"end": 2323,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2230,
"end": 2232,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2232,
"end": 2322,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2234,
"end": 2322,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2290,
"end": 2306,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2291,
"end": 2306,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2293,
"end": 2306,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2294,
"end": 2300,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2297,
"end": 2300,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2299,
"end": 2300,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2299,
"end": 2300,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2302,
"end": 2306,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2305,
"end": 2306,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2305,
"end": 2306,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2234,
"end": 2289,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2235,
"end": 2249,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2235,
"end": 2236,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2245,
"end": 2249,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2245,
"end": 2249,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2251,
"end": 2268,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2251,
"end": 2252,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2261,
"end": 2268,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2261,
"end": 2268,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2270,
"end": 2288,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2270,
"end": 2271,
"ctxt": 0
},
"value": "V",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2280,
"end": 2288,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2280,
"end": 2288,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2308,
"end": 2322,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2311,
"end": 2322,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2312,
"end": 2316,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2313,
"end": 2316,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2315,
"end": 2316,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2315,
"end": 2316,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2318,
"end": 2322,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2321,
"end": 2322,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2321,
"end": 2322,
"ctxt": 0
},
"value": "V",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2343,
"end": 2521,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2353,
"end": 2355,
"ctxt": 0
},
"value": "I4",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2364,
"end": 2365,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2364,
"end": 2365,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2366,
"end": 2521,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2380,
"end": 2487,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2380,
"end": 2382,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2382,
"end": 2486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2384,
"end": 2486,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2420,
"end": 2436,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2421,
"end": 2436,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2423,
"end": 2436,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2424,
"end": 2430,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2427,
"end": 2430,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2429,
"end": 2430,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2429,
"end": 2430,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2432,
"end": 2436,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2435,
"end": 2436,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2435,
"end": 2436,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2438,
"end": 2470,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2439,
"end": 2470,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2441,
"end": 2470,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2442,
"end": 2464,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2446,
"end": 2464,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2448,
"end": 2464,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2450,
"end": 2462,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2450,
"end": 2453,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2453,
"end": 2461,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2455,
"end": 2461,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2466,
"end": 2470,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2469,
"end": 2470,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2469,
"end": 2470,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2384,
"end": 2419,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2385,
"end": 2399,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2385,
"end": 2386,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2395,
"end": 2399,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2395,
"end": 2399,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2401,
"end": 2418,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2401,
"end": 2402,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2411,
"end": 2418,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2411,
"end": 2418,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2472,
"end": 2486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2475,
"end": 2486,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2476,
"end": 2480,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2477,
"end": 2480,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2479,
"end": 2480,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2479,
"end": 2480,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2482,
"end": 2486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2485,
"end": 2486,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2485,
"end": 2486,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2531,
"end": 2703,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2541,
"end": 2544,
"ctxt": 0
},
"value": "I4B",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2553,
"end": 2554,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2553,
"end": 2554,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2555,
"end": 2703,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2569,
"end": 2610,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2569,
"end": 2572,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2572,
"end": 2609,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2574,
"end": 2609,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 2594,
"end": 2603,
"ctxt": 0
},
"rest": {
"start": 2594,
"end": 2597,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 2597,
"end": 2598,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2598,
"end": 2603,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 2600,
"end": 2603,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 2600,
"end": 2601,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2600,
"end": 2601,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2574,
"end": 2593,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2575,
"end": 2592,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2575,
"end": 2576,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2585,
"end": 2592,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2585,
"end": 2592,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2605,
"end": 2609,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2608,
"end": 2609,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2608,
"end": 2609,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2713,
"end": 2911,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2723,
"end": 2726,
"ctxt": 0
},
"value": "I4C",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2735,
"end": 2736,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2735,
"end": 2736,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2737,
"end": 2911,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2751,
"end": 2793,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2751,
"end": 2754,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2754,
"end": 2792,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2756,
"end": 2792,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2776,
"end": 2780,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2777,
"end": 2780,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2779,
"end": 2780,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2779,
"end": 2780,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "Identifier",
"span": {
"start": 2782,
"end": 2786,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2783,
"end": 2786,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2785,
"end": 2786,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2785,
"end": 2786,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2756,
"end": 2775,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2757,
"end": 2774,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2757,
"end": 2758,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2767,
"end": 2774,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2767,
"end": 2774,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2788,
"end": 2792,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2791,
"end": 2792,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2791,
"end": 2792,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2921,
"end": 3098,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2931,
"end": 2934,
"ctxt": 0
},
"value": "I4E",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2943,
"end": 2944,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2943,
"end": 2944,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2945,
"end": 3098,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2959,
"end": 3029,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2959,
"end": 2962,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2962,
"end": 3028,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2964,
"end": 3028,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2992,
"end": 3006,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2993,
"end": 3006,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2995,
"end": 3006,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2995,
"end": 3000,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 3000,
"end": 3006,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 3001,
"end": 3005,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3001,
"end": 3005,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 3008,
"end": 3022,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3009,
"end": 3022,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3011,
"end": 3022,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3011,
"end": 3016,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 3016,
"end": 3022,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 3017,
"end": 3021,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3017,
"end": 3021,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2964,
"end": 2991,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2965,
"end": 2990,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2965,
"end": 2966,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2975,
"end": 2990,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2975,
"end": 2980,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2980,
"end": 2990,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2981,
"end": 2989,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2981,
"end": 2989,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
]
}
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3024,
"end": 3028,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3027,
"end": 3028,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3027,
"end": 3028,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3108,
"end": 3244,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3118,
"end": 3120,
"ctxt": 0
},
"value": "I6",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3129,
"end": 3130,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3129,
"end": 3130,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3131,
"end": 3244,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3145,
"end": 3178,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3145,
"end": 3148,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3148,
"end": 3177,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3150,
"end": 3177,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3154,
"end": 3171,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3155,
"end": 3171,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 3157,
"end": 3171,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 3159,
"end": 3164,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3159,
"end": 3160,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3160,
"end": 3163,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3162,
"end": 3163,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3162,
"end": 3163,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 3165,
"end": 3169,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3165,
"end": 3166,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3166,
"end": 3169,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3168,
"end": 3169,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3168,
"end": 3169,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3150,
"end": 3153,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3151,
"end": 3152,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3151,
"end": 3152,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3173,
"end": 3177,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3176,
"end": 3177,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3176,
"end": 3177,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3254,
"end": 3428,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3264,
"end": 3266,
"ctxt": 0
},
"value": "I7",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3275,
"end": 3276,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3275,
"end": 3276,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3277,
"end": 3428,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3291,
"end": 3342,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3291,
"end": 3294,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3294,
"end": 3341,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3296,
"end": 3341,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3313,
"end": 3330,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3314,
"end": 3330,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 3316,
"end": 3330,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 3318,
"end": 3323,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3318,
"end": 3319,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3319,
"end": 3322,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3321,
"end": 3322,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3321,
"end": 3322,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 3324,
"end": 3328,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3324,
"end": 3325,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3325,
"end": 3328,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3327,
"end": 3328,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3327,
"end": 3328,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3296,
"end": 3312,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3297,
"end": 3311,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3297,
"end": 3298,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 3307,
"end": 3311,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3307,
"end": 3311,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3332,
"end": 3341,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 3335,
"end": 3341,
"ctxt": 0
},
"kind": "number"
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3438,
"end": 3676,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3448,
"end": 3450,
"ctxt": 0
},
"value": "I8",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3459,
"end": 3460,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3459,
"end": 3460,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3461,
"end": 3676,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3634,
"end": 3666,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3634,
"end": 3637,
"ctxt": 0
},
"value": "a16",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3637,
"end": 3665,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3639,
"end": 3665,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3643,
"end": 3657,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3644,
"end": 3657,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3646,
"end": 3657,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3647,
"end": 3651,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3648,
"end": 3651,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3650,
"end": 3651,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3650,
"end": 3651,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3653,
"end": 3657,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3656,
"end": 3657,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3656,
"end": 3657,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3639,
"end": 3642,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3640,
"end": 3641,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3640,
"end": 3641,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3659,
"end": 3665,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3662,
"end": 3665,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 3662,
"end": 3663,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3662,
"end": 3663,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3686,
"end": 3883,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3696,
"end": 3698,
"ctxt": 0
},
"value": "I9",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3707,
"end": 3708,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3707,
"end": 3708,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3709,
"end": 3883,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3723,
"end": 3757,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3723,
"end": 3726,
"ctxt": 0
},
"value": "a17",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3726,
"end": 3756,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3728,
"end": 3756,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3732,
"end": 3746,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3733,
"end": 3746,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 3735,
"end": 3746,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3736,
"end": 3740,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3737,
"end": 3740,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3739,
"end": 3740,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3739,
"end": 3740,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3742,
"end": 3746,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3745,
"end": 3746,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3745,
"end": 3746,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3728,
"end": 3731,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3729,
"end": 3730,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3729,
"end": 3730,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3748,
"end": 3756,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3751,
"end": 3756,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 3751,
"end": 3754,
"ctxt": 0
},
"kind": "any"
}
}
}
}
},
"typeParams": null
}
]
}
}
]
}
},
{
"type": "TsModuleDeclaration",
"span": {
"start": 3895,
"end": 4354,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 3902,
"end": 3933,
"ctxt": 0
},
"value": "WithGenericSignaturesInBaseType",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 3934,
"end": 4354,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3992,
"end": 4049,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4002,
"end": 4003,
"ctxt": 0
},
"value": "B",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4004,
"end": 4049,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4018,
"end": 4039,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4018,
"end": 4020,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4020,
"end": 4038,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 4022,
"end": 4038,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4026,
"end": 4030,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4027,
"end": 4030,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4029,
"end": 4030,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4029,
"end": 4030,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4022,
"end": 4025,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4023,
"end": 4024,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4023,
"end": 4024,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4032,
"end": 4038,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4035,
"end": 4038,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 4035,
"end": 4036,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4035,
"end": 4036,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 4059,
"end": 4141,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4069,
"end": 4071,
"ctxt": 0
},
"value": "I6",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 4080,
"end": 4081,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 4080,
"end": 4081,
"ctxt": 0
},
"value": "B",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4082,
"end": 4141,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4096,
"end": 4122,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4096,
"end": 4098,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4098,
"end": 4121,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 4100,
"end": 4121,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4104,
"end": 4108,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4105,
"end": 4108,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4107,
"end": 4108,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4107,
"end": 4108,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4100,
"end": 4103,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4101,
"end": 4102,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4101,
"end": 4102,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4110,
"end": 4121,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4113,
"end": 4121,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 4113,
"end": 4119,
"ctxt": 0
},
"kind": "string"
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 4199,
"end": 4261,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4209,
"end": 4210,
"ctxt": 0
},
"value": "C",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4211,
"end": 4261,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4225,
"end": 4251,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4225,
"end": 4227,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4227,
"end": 4250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 4229,
"end": 4250,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4233,
"end": 4237,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4234,
"end": 4237,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4236,
"end": 4237,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4236,
"end": 4237,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4229,
"end": 4232,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4230,
"end": 4231,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4230,
"end": 4231,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4239,
"end": 4250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4242,
"end": 4250,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 4242,
"end": 4248,
"ctxt": 0
},
"kind": "string"
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 4271,
"end": 4348,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4281,
"end": 4283,
"ctxt": 0
},
"value": "I7",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 4292,
"end": 4293,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 4292,
"end": 4293,
"ctxt": 0
},
"value": "C",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4294,
"end": 4348,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4308,
"end": 4329,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4308,
"end": 4310,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4310,
"end": 4328,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 4312,
"end": 4328,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4316,
"end": 4320,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4317,
"end": 4320,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4319,
"end": 4320,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4319,
"end": 4320,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4312,
"end": 4315,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4313,
"end": 4314,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4313,
"end": 4314,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4322,
"end": 4328,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4325,
"end": 4328,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 4325,
"end": 4326,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4325,
"end": 4326,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
}
]
}
}
]
}
}
],
"interpreter": null
}