swc/crates/swc_ecma_parser/tests/tsc/constructSignatureAssignabilityInInheritance3.json
2022-02-04 17:08:38 +09:00

6584 lines
285 KiB
JSON

{
"type": "Script",
"span": {
"start": 120,
"end": 4396,
"ctxt": 0
},
"body": [
{
"type": "TsModuleDeclaration",
"span": {
"start": 120,
"end": 4396,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 127,
"end": 133,
"ctxt": 0
},
"value": "Errors",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 134,
"end": 4396,
"ctxt": 0
},
"body": [
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 147,
"end": 151,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"span": {
"start": 141,
"end": 168,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 154,
"end": 166,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 154,
"end": 157,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 157,
"end": 165,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 159,
"end": 165,
"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": 180,
"end": 187,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"declare": false,
"span": {
"start": 174,
"end": 217,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 203,
"end": 215,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 203,
"end": 206,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 206,
"end": 214,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 208,
"end": 214,
"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": 196,
"end": 200,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 229,
"end": 237,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"declare": false,
"span": {
"start": 223,
"end": 270,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 256,
"end": 268,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 256,
"end": 259,
"ctxt": 0
},
"value": "baz",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 259,
"end": 267,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 261,
"end": 267,
"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": 246,
"end": 253,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 282,
"end": 294,
"ctxt": 0
},
"value": "OtherDerived",
"optional": false
},
"declare": false,
"span": {
"start": 276,
"end": 325,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 310,
"end": 323,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 310,
"end": 314,
"ctxt": 0
},
"value": "bing",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 314,
"end": 322,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 316,
"end": 322,
"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": 303,
"end": 307,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "TsModuleDeclaration",
"span": {
"start": 333,
"end": 3536,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 340,
"end": 374,
"ctxt": 0
},
"value": "WithNonGenericSignaturesInBaseType",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 375,
"end": 3536,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 441,
"end": 1534,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 451,
"end": 452,
"ctxt": 0
},
"value": "A",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 453,
"end": 1534,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 468,
"end": 500,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 468,
"end": 470,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 470,
"end": 499,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 472,
"end": 499,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 477,
"end": 486,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 478,
"end": 486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 480,
"end": 486,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 488,
"end": 499,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 491,
"end": 499,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 491,
"end": 497,
"ctxt": 0
},
"kind": "string"
}
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 514,
"end": 575,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 514,
"end": 516,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 516,
"end": 574,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 518,
"end": 574,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 523,
"end": 548,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 524,
"end": 548,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 526,
"end": 548,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 527,
"end": 536,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 530,
"end": 536,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 532,
"end": 536,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 532,
"end": 536,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 538,
"end": 548,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 541,
"end": 548,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 541,
"end": 548,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 550,
"end": 574,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 553,
"end": 574,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 554,
"end": 561,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 555,
"end": 561,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 557,
"end": 561,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 557,
"end": 561,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 563,
"end": 574,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 566,
"end": 574,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 566,
"end": 574,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
}
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 589,
"end": 677,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 589,
"end": 591,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 591,
"end": 676,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 593,
"end": 676,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 598,
"end": 623,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 599,
"end": 623,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 601,
"end": 623,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 602,
"end": 611,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 605,
"end": 611,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 607,
"end": 611,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 607,
"end": 611,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 613,
"end": 623,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 616,
"end": 623,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 616,
"end": 623,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 625,
"end": 651,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 626,
"end": 651,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 628,
"end": 651,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 629,
"end": 639,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 633,
"end": 639,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 635,
"end": 639,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 635,
"end": 639,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 641,
"end": 651,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 644,
"end": 651,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 644,
"end": 651,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 653,
"end": 676,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 656,
"end": 676,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 657,
"end": 664,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 658,
"end": 664,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 660,
"end": 664,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 660,
"end": 664,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 666,
"end": 676,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 669,
"end": 676,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 669,
"end": 676,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 691,
"end": 723,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 691,
"end": 694,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 694,
"end": 722,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 696,
"end": 722,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 701,
"end": 713,
"ctxt": 0
},
"rest": {
"start": 701,
"end": 704,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 704,
"end": 705,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 705,
"end": 713,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 707,
"end": 713,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 707,
"end": 711,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 707,
"end": 711,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 715,
"end": 722,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 718,
"end": 722,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 718,
"end": 722,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 737,
"end": 808,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 737,
"end": 740,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 740,
"end": 807,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 742,
"end": 807,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 747,
"end": 765,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 748,
"end": 765,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 750,
"end": 765,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 752,
"end": 763,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 752,
"end": 755,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 755,
"end": 763,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 757,
"end": 763,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
},
{
"type": "Identifier",
"span": {
"start": 767,
"end": 798,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 768,
"end": 798,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 770,
"end": 798,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 772,
"end": 784,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 772,
"end": 775,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 775,
"end": 783,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 777,
"end": 783,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 785,
"end": 796,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 785,
"end": 788,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 788,
"end": 796,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 790,
"end": 796,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 800,
"end": 807,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 803,
"end": 807,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 803,
"end": 807,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 822,
"end": 886,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 822,
"end": 825,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 825,
"end": 885,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 827,
"end": 885,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 832,
"end": 846,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 833,
"end": 846,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 835,
"end": 846,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 835,
"end": 840,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 840,
"end": 846,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 841,
"end": 845,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 841,
"end": 845,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 848,
"end": 866,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 849,
"end": 866,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 851,
"end": 866,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 851,
"end": 856,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 856,
"end": 866,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 857,
"end": 865,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 857,
"end": 865,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 868,
"end": 885,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 871,
"end": 885,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 871,
"end": 876,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 876,
"end": 885,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 877,
"end": 884,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 877,
"end": 884,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 900,
"end": 1010,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 900,
"end": 903,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 903,
"end": 1009,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 905,
"end": 1009,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 924,
"end": 950,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 929,
"end": 938,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 930,
"end": 938,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 932,
"end": 938,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 939,
"end": 949,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 941,
"end": 949,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 941,
"end": 947,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 968,
"end": 994,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 973,
"end": 982,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 974,
"end": 982,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 976,
"end": 982,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 983,
"end": 993,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 985,
"end": 993,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 985,
"end": 991,
"ctxt": 0
},
"kind": "string"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1024,
"end": 1073,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1024,
"end": 1027,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1027,
"end": 1072,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1029,
"end": 1072,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1034,
"end": 1061,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1035,
"end": 1061,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1037,
"end": 1061,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1039,
"end": 1049,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1039,
"end": 1040,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1040,
"end": 1048,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1042,
"end": 1048,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1050,
"end": 1059,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1050,
"end": 1051,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1051,
"end": 1059,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1053,
"end": 1059,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1063,
"end": 1072,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1066,
"end": 1072,
"ctxt": 0
},
"kind": "number"
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1087,
"end": 1523,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1087,
"end": 1090,
"ctxt": 0
},
"value": "a16",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1090,
"end": 1522,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1092,
"end": 1522,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1218,
"end": 1351,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1223,
"end": 1339,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1224,
"end": 1339,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1226,
"end": 1339,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1249,
"end": 1273,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1254,
"end": 1263,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1255,
"end": 1263,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1257,
"end": 1263,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1264,
"end": 1272,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1266,
"end": 1272,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1295,
"end": 1320,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1300,
"end": 1310,
"ctxt": 0
},
"value": "a",
"optional": true,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1302,
"end": 1310,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1304,
"end": 1310,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1311,
"end": 1319,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1313,
"end": 1319,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1340,
"end": 1350,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1342,
"end": 1350,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1342,
"end": 1348,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1369,
"end": 1507,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1374,
"end": 1494,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1375,
"end": 1494,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1377,
"end": 1494,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1400,
"end": 1426,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1405,
"end": 1415,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1406,
"end": 1415,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1408,
"end": 1415,
"ctxt": 0
},
"kind": "boolean"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1416,
"end": 1425,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1418,
"end": 1425,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1448,
"end": 1475,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1453,
"end": 1464,
"ctxt": 0
},
"value": "a",
"optional": true,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1455,
"end": 1464,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1457,
"end": 1464,
"ctxt": 0
},
"kind": "boolean"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1465,
"end": 1474,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1467,
"end": 1474,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
}
]
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1495,
"end": 1506,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1497,
"end": 1506,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1497,
"end": 1504,
"ctxt": 0
},
"kind": "boolean"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1546,
"end": 1733,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1556,
"end": 1557,
"ctxt": 0
},
"value": "I",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1566,
"end": 1567,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1566,
"end": 1567,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1568,
"end": 1733,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1583,
"end": 1611,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1583,
"end": 1585,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1585,
"end": 1610,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1587,
"end": 1610,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1598,
"end": 1602,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1599,
"end": 1602,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1601,
"end": 1602,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1601,
"end": 1602,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1591,
"end": 1597,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1592,
"end": 1593,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1592,
"end": 1593,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1595,
"end": 1596,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1595,
"end": 1596,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1604,
"end": 1610,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1607,
"end": 1610,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 1607,
"end": 1608,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1607,
"end": 1608,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1745,
"end": 1897,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1755,
"end": 1757,
"ctxt": 0
},
"value": "I2",
"optional": false
},
"declare": false,
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1757,
"end": 1763,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1758,
"end": 1759,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1758,
"end": 1759,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1761,
"end": 1762,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1761,
"end": 1762,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1772,
"end": 1773,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1772,
"end": 1773,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1774,
"end": 1897,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1789,
"end": 1811,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1789,
"end": 1791,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1791,
"end": 1810,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1793,
"end": 1810,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1798,
"end": 1802,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1799,
"end": 1802,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1801,
"end": 1802,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1801,
"end": 1802,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1804,
"end": 1810,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1807,
"end": 1810,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 1807,
"end": 1808,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1807,
"end": 1808,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1909,
"end": 2125,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1919,
"end": 1921,
"ctxt": 0
},
"value": "I3",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1930,
"end": 1931,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1930,
"end": 1931,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1932,
"end": 2125,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2017,
"end": 2114,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2017,
"end": 2019,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2019,
"end": 2113,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2021,
"end": 2113,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2081,
"end": 2097,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2082,
"end": 2097,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2084,
"end": 2097,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2085,
"end": 2091,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2088,
"end": 2091,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2090,
"end": 2091,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2090,
"end": 2091,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2093,
"end": 2097,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2096,
"end": 2097,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2096,
"end": 2097,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2025,
"end": 2080,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2026,
"end": 2040,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2026,
"end": 2027,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2036,
"end": 2040,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2036,
"end": 2040,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2042,
"end": 2059,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2042,
"end": 2043,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2052,
"end": 2059,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2052,
"end": 2059,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2061,
"end": 2079,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2061,
"end": 2062,
"ctxt": 0
},
"value": "V",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2071,
"end": 2079,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2071,
"end": 2079,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2099,
"end": 2113,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2102,
"end": 2113,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2103,
"end": 2107,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2104,
"end": 2107,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2106,
"end": 2107,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2106,
"end": 2107,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2109,
"end": 2113,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2112,
"end": 2113,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2112,
"end": 2113,
"ctxt": 0
},
"value": "V",
"optional": false
},
"typeParams": null
}
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2137,
"end": 2321,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2147,
"end": 2149,
"ctxt": 0
},
"value": "I4",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2158,
"end": 2159,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2158,
"end": 2159,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2160,
"end": 2321,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2175,
"end": 2286,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2175,
"end": 2177,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2177,
"end": 2285,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2179,
"end": 2285,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2219,
"end": 2235,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2220,
"end": 2235,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2222,
"end": 2235,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2223,
"end": 2229,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2226,
"end": 2229,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2228,
"end": 2229,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2228,
"end": 2229,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2231,
"end": 2235,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2234,
"end": 2235,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2234,
"end": 2235,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2237,
"end": 2269,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2238,
"end": 2269,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2240,
"end": 2269,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2241,
"end": 2263,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2245,
"end": 2263,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2247,
"end": 2263,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2249,
"end": 2261,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2249,
"end": 2252,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2252,
"end": 2260,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2254,
"end": 2260,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2265,
"end": 2269,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2268,
"end": 2269,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2268,
"end": 2269,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2183,
"end": 2218,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2184,
"end": 2198,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2184,
"end": 2185,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2194,
"end": 2198,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2194,
"end": 2198,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2200,
"end": 2217,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2200,
"end": 2201,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2210,
"end": 2217,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2210,
"end": 2217,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2271,
"end": 2285,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2274,
"end": 2285,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2275,
"end": 2279,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2276,
"end": 2279,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2278,
"end": 2279,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2278,
"end": 2279,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2281,
"end": 2285,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2284,
"end": 2285,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2284,
"end": 2285,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2333,
"end": 2511,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2343,
"end": 2346,
"ctxt": 0
},
"value": "I4B",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2355,
"end": 2356,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2355,
"end": 2356,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2357,
"end": 2511,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2372,
"end": 2417,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2372,
"end": 2375,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2375,
"end": 2416,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2377,
"end": 2416,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 2401,
"end": 2410,
"ctxt": 0
},
"rest": {
"start": 2401,
"end": 2404,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 2404,
"end": 2405,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2405,
"end": 2410,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 2407,
"end": 2410,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 2407,
"end": 2408,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2407,
"end": 2408,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2381,
"end": 2400,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2382,
"end": 2399,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2382,
"end": 2383,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2392,
"end": 2399,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2392,
"end": 2399,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2412,
"end": 2416,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2415,
"end": 2416,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2415,
"end": 2416,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2523,
"end": 2727,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2533,
"end": 2536,
"ctxt": 0
},
"value": "I4C",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2545,
"end": 2546,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2545,
"end": 2546,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2547,
"end": 2727,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2562,
"end": 2608,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2562,
"end": 2565,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2565,
"end": 2607,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2567,
"end": 2607,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2591,
"end": 2595,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2592,
"end": 2595,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2594,
"end": 2595,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2594,
"end": 2595,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "Identifier",
"span": {
"start": 2597,
"end": 2601,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2598,
"end": 2601,
"ctxt": 0
},
"typeAnnotation": {
"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": 2571,
"end": 2590,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2572,
"end": 2589,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2572,
"end": 2573,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2582,
"end": 2589,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2582,
"end": 2589,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2603,
"end": 2607,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2606,
"end": 2607,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2606,
"end": 2607,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2739,
"end": 2922,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2749,
"end": 2752,
"ctxt": 0
},
"value": "I4E",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2761,
"end": 2762,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2761,
"end": 2762,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2763,
"end": 2922,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2778,
"end": 2852,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2778,
"end": 2781,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2781,
"end": 2851,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2783,
"end": 2851,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2815,
"end": 2829,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2816,
"end": 2829,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2818,
"end": 2829,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2818,
"end": 2823,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2823,
"end": 2829,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2824,
"end": 2828,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2824,
"end": 2828,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2831,
"end": 2845,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2832,
"end": 2845,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2834,
"end": 2845,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2834,
"end": 2839,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2839,
"end": 2845,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2840,
"end": 2844,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2840,
"end": 2844,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2787,
"end": 2814,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2788,
"end": 2813,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2788,
"end": 2789,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2798,
"end": 2813,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2798,
"end": 2803,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2803,
"end": 2813,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2804,
"end": 2812,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2804,
"end": 2812,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
]
}
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2847,
"end": 2851,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2850,
"end": 2851,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2850,
"end": 2851,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 2934,
"end": 3076,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2944,
"end": 2946,
"ctxt": 0
},
"value": "I6",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 2955,
"end": 2956,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2955,
"end": 2956,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 2957,
"end": 3076,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 2972,
"end": 3009,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2972,
"end": 2975,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2975,
"end": 3008,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 2977,
"end": 3008,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2985,
"end": 3002,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2986,
"end": 3002,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2988,
"end": 3002,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2990,
"end": 2995,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2990,
"end": 2991,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2991,
"end": 2994,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2993,
"end": 2994,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2993,
"end": 2994,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2996,
"end": 3000,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2996,
"end": 2997,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2997,
"end": 3000,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2999,
"end": 3000,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2999,
"end": 3000,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2981,
"end": 2984,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2982,
"end": 2983,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2982,
"end": 2983,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3004,
"end": 3008,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3007,
"end": 3008,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3007,
"end": 3008,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3088,
"end": 3268,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3098,
"end": 3100,
"ctxt": 0
},
"value": "I7",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3109,
"end": 3110,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3109,
"end": 3110,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3111,
"end": 3268,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3126,
"end": 3181,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3126,
"end": 3129,
"ctxt": 0
},
"value": "a15",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3129,
"end": 3180,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3131,
"end": 3180,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3152,
"end": 3169,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3153,
"end": 3169,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 3155,
"end": 3169,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 3157,
"end": 3162,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3157,
"end": 3158,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3158,
"end": 3161,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3160,
"end": 3161,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3160,
"end": 3161,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 3163,
"end": 3167,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3163,
"end": 3164,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3164,
"end": 3167,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3166,
"end": 3167,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3166,
"end": 3167,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3135,
"end": 3151,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3136,
"end": 3150,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3136,
"end": 3137,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 3146,
"end": 3150,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3146,
"end": 3150,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3171,
"end": 3180,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 3174,
"end": 3180,
"ctxt": 0
},
"kind": "number"
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3280,
"end": 3529,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3290,
"end": 3292,
"ctxt": 0
},
"value": "I8",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3301,
"end": 3302,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3301,
"end": 3302,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3303,
"end": 3529,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3478,
"end": 3518,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3478,
"end": 3481,
"ctxt": 0
},
"value": "a16",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3481,
"end": 3517,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3483,
"end": 3517,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3491,
"end": 3509,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3492,
"end": 3509,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3494,
"end": 3509,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3499,
"end": 3503,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3500,
"end": 3503,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3502,
"end": 3503,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3502,
"end": 3503,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3505,
"end": 3509,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3508,
"end": 3509,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3508,
"end": 3509,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3487,
"end": 3490,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3488,
"end": 3489,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3488,
"end": 3489,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3511,
"end": 3517,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3514,
"end": 3517,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 3514,
"end": 3515,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3514,
"end": 3515,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
}
]
}
},
{
"type": "TsModuleDeclaration",
"span": {
"start": 3544,
"end": 4393,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 3551,
"end": 3582,
"ctxt": 0
},
"value": "WithGenericSignaturesInBaseType",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 3583,
"end": 4393,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3643,
"end": 3706,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3653,
"end": 3654,
"ctxt": 0
},
"value": "B",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3655,
"end": 3706,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3670,
"end": 3695,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3670,
"end": 3672,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3672,
"end": 3694,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3674,
"end": 3694,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3682,
"end": 3686,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3683,
"end": 3686,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3685,
"end": 3686,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3685,
"end": 3686,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3678,
"end": 3681,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3679,
"end": 3680,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3679,
"end": 3680,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3688,
"end": 3694,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3691,
"end": 3694,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 3691,
"end": 3692,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3691,
"end": 3692,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3718,
"end": 3806,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3728,
"end": 3730,
"ctxt": 0
},
"value": "I6",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3739,
"end": 3740,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3739,
"end": 3740,
"ctxt": 0
},
"value": "B",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3741,
"end": 3806,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3756,
"end": 3786,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3756,
"end": 3758,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3758,
"end": 3785,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3760,
"end": 3785,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3768,
"end": 3772,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3769,
"end": 3772,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3771,
"end": 3772,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3771,
"end": 3772,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3764,
"end": 3767,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3765,
"end": 3766,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3765,
"end": 3766,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3774,
"end": 3785,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3777,
"end": 3785,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 3777,
"end": 3783,
"ctxt": 0
},
"kind": "string"
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3867,
"end": 3935,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3877,
"end": 3878,
"ctxt": 0
},
"value": "C",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3879,
"end": 3935,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3894,
"end": 3924,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3894,
"end": 3896,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3896,
"end": 3923,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3898,
"end": 3923,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3906,
"end": 3910,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3907,
"end": 3910,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3909,
"end": 3910,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3909,
"end": 3910,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3902,
"end": 3905,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3903,
"end": 3904,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3903,
"end": 3904,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3912,
"end": 3923,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 3915,
"end": 3923,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 3915,
"end": 3921,
"ctxt": 0
},
"kind": "string"
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 3947,
"end": 4030,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 3957,
"end": 3959,
"ctxt": 0
},
"value": "I7",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 3968,
"end": 3969,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3968,
"end": 3969,
"ctxt": 0
},
"value": "C",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 3970,
"end": 4030,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 3985,
"end": 4010,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 3985,
"end": 3987,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3987,
"end": 4009,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 3989,
"end": 4009,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 3997,
"end": 4001,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3998,
"end": 4001,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4000,
"end": 4001,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4000,
"end": 4001,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3993,
"end": 3996,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3994,
"end": 3995,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3994,
"end": 3995,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4003,
"end": 4009,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4006,
"end": 4009,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 4006,
"end": 4007,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4006,
"end": 4007,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 4108,
"end": 4281,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4118,
"end": 4119,
"ctxt": 0
},
"value": "D",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4120,
"end": 4281,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4135,
"end": 4270,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4135,
"end": 4138,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4138,
"end": 4269,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 4140,
"end": 4269,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 4159,
"end": 4199,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4183,
"end": 4187,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4184,
"end": 4187,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4186,
"end": 4187,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4186,
"end": 4187,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4188,
"end": 4198,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4190,
"end": 4198,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 4190,
"end": 4196,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4163,
"end": 4182,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4164,
"end": 4181,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4164,
"end": 4165,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 4174,
"end": 4181,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4174,
"end": 4181,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 4217,
"end": 4254,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4238,
"end": 4242,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4239,
"end": 4242,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4241,
"end": 4242,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4241,
"end": 4242,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4243,
"end": 4253,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4245,
"end": 4253,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 4245,
"end": 4251,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4221,
"end": 4237,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4222,
"end": 4236,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4222,
"end": 4223,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 4232,
"end": 4236,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4232,
"end": 4236,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
}
}
]
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 4293,
"end": 4386,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4303,
"end": 4305,
"ctxt": 0
},
"value": "I8",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 4314,
"end": 4315,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 4314,
"end": 4315,
"ctxt": 0
},
"value": "D",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 4316,
"end": 4386,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 4331,
"end": 4375,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 4331,
"end": 4334,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4334,
"end": 4374,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 4336,
"end": 4374,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 4357,
"end": 4361,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4358,
"end": 4361,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4360,
"end": 4361,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4360,
"end": 4361,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4340,
"end": 4356,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4341,
"end": 4355,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4341,
"end": 4342,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 4351,
"end": 4355,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4351,
"end": 4355,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4363,
"end": 4374,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 4366,
"end": 4374,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 4366,
"end": 4372,
"ctxt": 0
},
"kind": "number"
}
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
}
]
}
}
]
}
}
],
"interpreter": null
}