swc/crates/swc_ecma_parser/tests/tsc/callSignatureAssignabilityInInheritance5.json
2022-02-04 20:17:42 +09:00

6524 lines
218 KiB
JSON

{
"type": "Script",
"span": {
"start": 207,
"end": 2535,
"ctxt": 0
},
"body": [
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 213,
"end": 217,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"span": {
"start": 207,
"end": 234,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 220,
"end": 232,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 220,
"end": 223,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 223,
"end": 231,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 225,
"end": 231,
"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": 241,
"end": 248,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"declare": false,
"span": {
"start": 235,
"end": 278,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 264,
"end": 276,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 264,
"end": 267,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 267,
"end": 275,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 269,
"end": 275,
"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": 257,
"end": 261,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 285,
"end": 293,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"declare": false,
"span": {
"start": 279,
"end": 326,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 312,
"end": 324,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 312,
"end": 315,
"ctxt": 0
},
"value": "baz",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 315,
"end": 323,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 317,
"end": 323,
"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": 302,
"end": 309,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 333,
"end": 345,
"ctxt": 0
},
"value": "OtherDerived",
"optional": false
},
"declare": false,
"span": {
"start": 327,
"end": 376,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassProperty",
"span": {
"start": 361,
"end": 374,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 361,
"end": 365,
"ctxt": 0
},
"value": "bing",
"optional": false
},
"value": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 365,
"end": 373,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 367,
"end": 373,
"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": 354,
"end": 358,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 378,
"end": 1167,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 388,
"end": 389,
"ctxt": 0
},
"value": "A",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 390,
"end": 1167,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 412,
"end": 439,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 412,
"end": 413,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 413,
"end": 438,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 415,
"end": 438,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 416,
"end": 425,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 417,
"end": 425,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 419,
"end": 425,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 427,
"end": 438,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 430,
"end": 438,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 430,
"end": 436,
"ctxt": 0
},
"kind": "number"
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 444,
"end": 472,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 444,
"end": 446,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 446,
"end": 471,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 448,
"end": 471,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 449,
"end": 458,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 450,
"end": 458,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 452,
"end": 458,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 460,
"end": 471,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 463,
"end": 471,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 463,
"end": 469,
"ctxt": 0
},
"kind": "string"
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 477,
"end": 501,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 477,
"end": 479,
"ctxt": 0
},
"value": "a3",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 479,
"end": 500,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 481,
"end": 500,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 482,
"end": 491,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 483,
"end": 491,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 485,
"end": 491,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 493,
"end": 500,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 496,
"end": 500,
"ctxt": 0
},
"kind": "void"
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 506,
"end": 543,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 506,
"end": 508,
"ctxt": 0
},
"value": "a4",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 508,
"end": 542,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 510,
"end": 542,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 511,
"end": 520,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 512,
"end": 520,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 514,
"end": 520,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "Identifier",
"span": {
"start": 522,
"end": 531,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 523,
"end": 531,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 525,
"end": 531,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 533,
"end": 542,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 536,
"end": 542,
"ctxt": 0
},
"kind": "string"
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 548,
"end": 591,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 548,
"end": 550,
"ctxt": 0
},
"value": "a5",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 550,
"end": 590,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 552,
"end": 590,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 553,
"end": 579,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 554,
"end": 579,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 556,
"end": 579,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 557,
"end": 568,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 560,
"end": 568,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 562,
"end": 568,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 570,
"end": 579,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 573,
"end": 579,
"ctxt": 0
},
"kind": "number"
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 581,
"end": 590,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 584,
"end": 590,
"ctxt": 0
},
"kind": "string"
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 596,
"end": 636,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 596,
"end": 598,
"ctxt": 0
},
"value": "a6",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 598,
"end": 635,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 600,
"end": 635,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 601,
"end": 626,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 602,
"end": 626,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 604,
"end": 626,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 605,
"end": 614,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 608,
"end": 614,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 610,
"end": 614,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 610,
"end": 614,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 616,
"end": 626,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 619,
"end": 626,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 619,
"end": 626,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 628,
"end": 635,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 631,
"end": 635,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 631,
"end": 635,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 641,
"end": 697,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 641,
"end": 643,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 643,
"end": 696,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 645,
"end": 696,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 646,
"end": 671,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 647,
"end": 671,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 649,
"end": 671,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 650,
"end": 659,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 653,
"end": 659,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 655,
"end": 659,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 655,
"end": 659,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 661,
"end": 671,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 664,
"end": 671,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 664,
"end": 671,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 673,
"end": 696,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 676,
"end": 696,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 677,
"end": 684,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 678,
"end": 684,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 680,
"end": 684,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 680,
"end": 684,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 686,
"end": 696,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 689,
"end": 696,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 689,
"end": 696,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 702,
"end": 786,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 702,
"end": 704,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 704,
"end": 785,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 706,
"end": 785,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 707,
"end": 732,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 708,
"end": 732,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 710,
"end": 732,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 711,
"end": 720,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 714,
"end": 720,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 716,
"end": 720,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 716,
"end": 720,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 722,
"end": 732,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 725,
"end": 732,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 725,
"end": 732,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 734,
"end": 760,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 735,
"end": 760,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 737,
"end": 760,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 738,
"end": 748,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 742,
"end": 748,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 744,
"end": 748,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 744,
"end": 748,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 750,
"end": 760,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 753,
"end": 760,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 753,
"end": 760,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 762,
"end": 785,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 765,
"end": 785,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 766,
"end": 773,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 767,
"end": 773,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 769,
"end": 773,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 769,
"end": 773,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 775,
"end": 785,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 778,
"end": 785,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 778,
"end": 785,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 791,
"end": 875,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 791,
"end": 793,
"ctxt": 0
},
"value": "a9",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 793,
"end": 874,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 795,
"end": 874,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 796,
"end": 821,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 797,
"end": 821,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 799,
"end": 821,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 800,
"end": 809,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 803,
"end": 809,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 805,
"end": 809,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 805,
"end": 809,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 811,
"end": 821,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 814,
"end": 821,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 814,
"end": 821,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 823,
"end": 849,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 824,
"end": 849,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 826,
"end": 849,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 827,
"end": 837,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 831,
"end": 837,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 833,
"end": 837,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 833,
"end": 837,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 839,
"end": 849,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 842,
"end": 849,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 842,
"end": 849,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 851,
"end": 874,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 854,
"end": 874,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 855,
"end": 862,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 856,
"end": 862,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 858,
"end": 862,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 858,
"end": 862,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 864,
"end": 874,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 867,
"end": 874,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 867,
"end": 874,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 880,
"end": 914,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 880,
"end": 883,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 883,
"end": 913,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 885,
"end": 913,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 886,
"end": 901,
"ctxt": 0
},
"rest": {
"start": 886,
"end": 889,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 889,
"end": 890,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 890,
"end": 901,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 892,
"end": 901,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 892,
"end": 899,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 892,
"end": 899,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 903,
"end": 913,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 906,
"end": 913,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 906,
"end": 913,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 919,
"end": 986,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 919,
"end": 922,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 922,
"end": 985,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 924,
"end": 985,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 925,
"end": 943,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 926,
"end": 943,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 928,
"end": 943,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 930,
"end": 941,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 930,
"end": 933,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 933,
"end": 941,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 935,
"end": 941,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
},
{
"type": "Identifier",
"span": {
"start": 945,
"end": 976,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 946,
"end": 976,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 948,
"end": 976,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 950,
"end": 962,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 950,
"end": 953,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 953,
"end": 961,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 955,
"end": 961,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 963,
"end": 974,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 963,
"end": 966,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 966,
"end": 974,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 968,
"end": 974,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 978,
"end": 985,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 981,
"end": 985,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 981,
"end": 985,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 991,
"end": 1051,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 991,
"end": 994,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 994,
"end": 1050,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 996,
"end": 1050,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 997,
"end": 1011,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 998,
"end": 1011,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1000,
"end": 1011,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1000,
"end": 1005,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1005,
"end": 1011,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1006,
"end": 1010,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1006,
"end": 1010,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 1013,
"end": 1031,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1014,
"end": 1031,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1016,
"end": 1031,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1016,
"end": 1021,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1021,
"end": 1031,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1022,
"end": 1030,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1022,
"end": 1030,
"ctxt": 0
},
"value": "Derived2",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1033,
"end": 1050,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1036,
"end": 1050,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1036,
"end": 1041,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1041,
"end": 1050,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1042,
"end": 1049,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1042,
"end": 1049,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1056,
"end": 1115,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1056,
"end": 1059,
"ctxt": 0
},
"value": "a13",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1059,
"end": 1114,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1061,
"end": 1114,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1062,
"end": 1076,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1063,
"end": 1076,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1065,
"end": 1076,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1065,
"end": 1070,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1070,
"end": 1076,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1071,
"end": 1075,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1071,
"end": 1075,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 1078,
"end": 1095,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1079,
"end": 1095,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1081,
"end": 1095,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1081,
"end": 1086,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1086,
"end": 1095,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1087,
"end": 1094,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1087,
"end": 1094,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1097,
"end": 1114,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1100,
"end": 1114,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1100,
"end": 1105,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1105,
"end": 1114,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1106,
"end": 1113,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1106,
"end": 1113,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1120,
"end": 1165,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1120,
"end": 1123,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1123,
"end": 1164,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1125,
"end": 1164,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1126,
"end": 1153,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1127,
"end": 1153,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1129,
"end": 1153,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1131,
"end": 1141,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1131,
"end": 1132,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1132,
"end": 1140,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1134,
"end": 1140,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1142,
"end": 1151,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1142,
"end": 1143,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1143,
"end": 1151,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1145,
"end": 1151,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1155,
"end": 1164,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1158,
"end": 1164,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1158,
"end": 1164,
"ctxt": 0
},
"value": "Object",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1169,
"end": 1219,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1179,
"end": 1180,
"ctxt": 0
},
"value": "B",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1189,
"end": 1190,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1189,
"end": 1190,
"ctxt": 0
},
"value": "A",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1191,
"end": 1219,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1197,
"end": 1217,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1197,
"end": 1198,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1198,
"end": 1216,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1200,
"end": 1216,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1204,
"end": 1208,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1205,
"end": 1208,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1207,
"end": 1208,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1207,
"end": 1208,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1200,
"end": 1203,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1201,
"end": 1202,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1201,
"end": 1202,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1210,
"end": 1216,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1213,
"end": 1216,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 1213,
"end": 1214,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1213,
"end": 1214,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1228,
"end": 2535,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1238,
"end": 1239,
"ctxt": 0
},
"value": "I",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1248,
"end": 1249,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1248,
"end": 1249,
"ctxt": 0
},
"value": "B",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1250,
"end": 2535,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1267,
"end": 1287,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1267,
"end": 1268,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1268,
"end": 1286,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1270,
"end": 1286,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1274,
"end": 1278,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1275,
"end": 1278,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1277,
"end": 1278,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1277,
"end": 1278,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1270,
"end": 1273,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1271,
"end": 1272,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1271,
"end": 1272,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1280,
"end": 1286,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1283,
"end": 1286,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 1283,
"end": 1284,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1283,
"end": 1284,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1349,
"end": 1375,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1349,
"end": 1351,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1351,
"end": 1374,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1353,
"end": 1374,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1357,
"end": 1361,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1358,
"end": 1361,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1360,
"end": 1361,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1360,
"end": 1361,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1353,
"end": 1356,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1354,
"end": 1355,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1354,
"end": 1355,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1363,
"end": 1374,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 1366,
"end": 1374,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 1366,
"end": 1372,
"ctxt": 0
},
"kind": "string"
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1386,
"end": 1405,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1386,
"end": 1388,
"ctxt": 0
},
"value": "a3",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1388,
"end": 1404,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1390,
"end": 1404,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1394,
"end": 1398,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1395,
"end": 1398,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1397,
"end": 1398,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1397,
"end": 1398,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1390,
"end": 1393,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1391,
"end": 1392,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1391,
"end": 1392,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1400,
"end": 1404,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1403,
"end": 1404,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1403,
"end": 1404,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1440,
"end": 1468,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1440,
"end": 1442,
"ctxt": 0
},
"value": "a4",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1442,
"end": 1467,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1444,
"end": 1467,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1451,
"end": 1455,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1452,
"end": 1455,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1454,
"end": 1455,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1454,
"end": 1455,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "Identifier",
"span": {
"start": 1457,
"end": 1461,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1458,
"end": 1461,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1460,
"end": 1461,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1460,
"end": 1461,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1444,
"end": 1450,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1445,
"end": 1446,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1445,
"end": 1446,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1448,
"end": 1449,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1448,
"end": 1449,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1463,
"end": 1467,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1466,
"end": 1467,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1466,
"end": 1467,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1543,
"end": 1577,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1543,
"end": 1545,
"ctxt": 0
},
"value": "a5",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1545,
"end": 1576,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1547,
"end": 1576,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1554,
"end": 1570,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1555,
"end": 1570,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1557,
"end": 1570,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1558,
"end": 1564,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1561,
"end": 1564,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1563,
"end": 1564,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1563,
"end": 1564,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1566,
"end": 1570,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1569,
"end": 1570,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1569,
"end": 1570,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1547,
"end": 1553,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1548,
"end": 1549,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1548,
"end": 1549,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1551,
"end": 1552,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1551,
"end": 1552,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1572,
"end": 1576,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1575,
"end": 1576,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1575,
"end": 1576,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1644,
"end": 1707,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1644,
"end": 1646,
"ctxt": 0
},
"value": "a6",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1646,
"end": 1706,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1648,
"end": 1706,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1684,
"end": 1700,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1685,
"end": 1700,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1687,
"end": 1700,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1688,
"end": 1694,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1691,
"end": 1694,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1693,
"end": 1694,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1693,
"end": 1694,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1696,
"end": 1700,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1699,
"end": 1700,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1699,
"end": 1700,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1648,
"end": 1683,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1649,
"end": 1663,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1649,
"end": 1650,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1659,
"end": 1663,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1659,
"end": 1663,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1665,
"end": 1682,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1665,
"end": 1666,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1675,
"end": 1682,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1675,
"end": 1682,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1702,
"end": 1706,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1705,
"end": 1706,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1705,
"end": 1706,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1761,
"end": 1834,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1761,
"end": 1763,
"ctxt": 0
},
"value": "a7",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1763,
"end": 1833,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1765,
"end": 1833,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1801,
"end": 1817,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1802,
"end": 1817,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1804,
"end": 1817,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1805,
"end": 1811,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1808,
"end": 1811,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1810,
"end": 1811,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1810,
"end": 1811,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1813,
"end": 1817,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1816,
"end": 1817,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1816,
"end": 1817,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1765,
"end": 1800,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1766,
"end": 1780,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1766,
"end": 1767,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1776,
"end": 1780,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1776,
"end": 1780,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1782,
"end": 1799,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1782,
"end": 1783,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1792,
"end": 1799,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1792,
"end": 1799,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1819,
"end": 1833,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1822,
"end": 1833,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1823,
"end": 1827,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1824,
"end": 1827,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1826,
"end": 1827,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1826,
"end": 1827,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1829,
"end": 1833,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1832,
"end": 1833,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1832,
"end": 1833,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1845,
"end": 1937,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1845,
"end": 1847,
"ctxt": 0
},
"value": "a8",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1847,
"end": 1936,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1849,
"end": 1936,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1885,
"end": 1901,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1886,
"end": 1901,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1888,
"end": 1901,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1889,
"end": 1895,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1892,
"end": 1895,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1894,
"end": 1895,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1894,
"end": 1895,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1897,
"end": 1901,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1900,
"end": 1901,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1900,
"end": 1901,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 1903,
"end": 1920,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1904,
"end": 1920,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1906,
"end": 1920,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1907,
"end": 1914,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1911,
"end": 1914,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1913,
"end": 1914,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1913,
"end": 1914,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1916,
"end": 1920,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1919,
"end": 1920,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1919,
"end": 1920,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1849,
"end": 1884,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1850,
"end": 1864,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1850,
"end": 1851,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1860,
"end": 1864,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1860,
"end": 1864,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1866,
"end": 1883,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1866,
"end": 1867,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1876,
"end": 1883,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1876,
"end": 1883,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1922,
"end": 1936,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1925,
"end": 1936,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1926,
"end": 1930,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1927,
"end": 1930,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1929,
"end": 1930,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1929,
"end": 1930,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1932,
"end": 1936,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1935,
"end": 1936,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1935,
"end": 1936,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1948,
"end": 2068,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1948,
"end": 1950,
"ctxt": 0
},
"value": "a9",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1950,
"end": 2067,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1952,
"end": 2067,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1988,
"end": 2004,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1989,
"end": 2004,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1991,
"end": 2004,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1992,
"end": 1998,
"ctxt": 0
},
"value": "arg",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1995,
"end": 1998,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1997,
"end": 1998,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1997,
"end": 1998,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2000,
"end": 2004,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2003,
"end": 2004,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2003,
"end": 2004,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2006,
"end": 2051,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2007,
"end": 2051,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2009,
"end": 2051,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2010,
"end": 2045,
"ctxt": 0
},
"value": "arg2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2014,
"end": 2045,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2016,
"end": 2045,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2018,
"end": 2030,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2018,
"end": 2021,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2021,
"end": 2029,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2023,
"end": 2029,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2031,
"end": 2043,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2031,
"end": 2035,
"ctxt": 0
},
"value": "bing",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2035,
"end": 2043,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2037,
"end": 2043,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2047,
"end": 2051,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2050,
"end": 2051,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2050,
"end": 2051,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1952,
"end": 1987,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1953,
"end": 1967,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1953,
"end": 1954,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1963,
"end": 1967,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1963,
"end": 1967,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 1969,
"end": 1986,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1969,
"end": 1970,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 1979,
"end": 1986,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1979,
"end": 1986,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2053,
"end": 2067,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2056,
"end": 2067,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2057,
"end": 2061,
"ctxt": 0
},
"value": "r",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2058,
"end": 2061,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2060,
"end": 2061,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2060,
"end": 2061,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2063,
"end": 2067,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2066,
"end": 2067,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2066,
"end": 2067,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2122,
"end": 2163,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2122,
"end": 2125,
"ctxt": 0
},
"value": "a10",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2125,
"end": 2162,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2127,
"end": 2162,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 2147,
"end": 2156,
"ctxt": 0
},
"rest": {
"start": 2147,
"end": 2150,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 2150,
"end": 2151,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2151,
"end": 2156,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 2153,
"end": 2156,
"ctxt": 0
},
"elemType": {
"type": "TsTypeReference",
"span": {
"start": 2153,
"end": 2154,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2153,
"end": 2154,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2127,
"end": 2146,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2128,
"end": 2145,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2128,
"end": 2129,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2138,
"end": 2145,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2138,
"end": 2145,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2158,
"end": 2162,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2161,
"end": 2162,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2161,
"end": 2162,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2174,
"end": 2213,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2174,
"end": 2177,
"ctxt": 0
},
"value": "a11",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2177,
"end": 2212,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2179,
"end": 2212,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2196,
"end": 2200,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2197,
"end": 2200,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2199,
"end": 2200,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2199,
"end": 2200,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "Identifier",
"span": {
"start": 2202,
"end": 2206,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2203,
"end": 2206,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2205,
"end": 2206,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2205,
"end": 2206,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2179,
"end": 2195,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2180,
"end": 2194,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2180,
"end": 2181,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2190,
"end": 2194,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2190,
"end": 2194,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2208,
"end": 2212,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2211,
"end": 2212,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2211,
"end": 2212,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2224,
"end": 2293,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2224,
"end": 2227,
"ctxt": 0
},
"value": "a12",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2227,
"end": 2292,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2229,
"end": 2292,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2253,
"end": 2267,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2254,
"end": 2267,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2256,
"end": 2267,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2256,
"end": 2261,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2261,
"end": 2267,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2262,
"end": 2266,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2262,
"end": 2266,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2269,
"end": 2273,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2270,
"end": 2273,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2272,
"end": 2273,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2272,
"end": 2273,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2229,
"end": 2252,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2230,
"end": 2251,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2230,
"end": 2231,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2240,
"end": 2251,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2240,
"end": 2245,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2245,
"end": 2251,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2246,
"end": 2250,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2246,
"end": 2250,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2275,
"end": 2292,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2278,
"end": 2292,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2278,
"end": 2283,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2283,
"end": 2292,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2284,
"end": 2291,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2284,
"end": 2291,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2334,
"end": 2393,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2334,
"end": 2337,
"ctxt": 0
},
"value": "a13",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2337,
"end": 2392,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2339,
"end": 2392,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2366,
"end": 2380,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2367,
"end": 2380,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2369,
"end": 2380,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2369,
"end": 2374,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2374,
"end": 2380,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2375,
"end": 2379,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2375,
"end": 2379,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
}
]
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 2382,
"end": 2386,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2383,
"end": 2386,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2385,
"end": 2386,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2385,
"end": 2386,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2339,
"end": 2365,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2340,
"end": 2364,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2340,
"end": 2341,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 2350,
"end": 2364,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2350,
"end": 2355,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 2355,
"end": 2364,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 2356,
"end": 2363,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2356,
"end": 2363,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
]
}
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2388,
"end": 2392,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2391,
"end": 2392,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2391,
"end": 2392,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2491,
"end": 2527,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2491,
"end": 2494,
"ctxt": 0
},
"value": "a14",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2494,
"end": 2526,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2496,
"end": 2526,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 2503,
"end": 2520,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2504,
"end": 2520,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2506,
"end": 2520,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2508,
"end": 2513,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2508,
"end": 2509,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2509,
"end": 2512,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2511,
"end": 2512,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2511,
"end": 2512,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2514,
"end": 2518,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2514,
"end": 2515,
"ctxt": 0
},
"value": "b",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2515,
"end": 2518,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2517,
"end": 2518,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2517,
"end": 2518,
"ctxt": 0
},
"value": "U",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2496,
"end": 2502,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2497,
"end": 2498,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2497,
"end": 2498,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
},
{
"type": "TsTypeParameter",
"span": {
"start": 2500,
"end": 2501,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2500,
"end": 2501,
"ctxt": 0
},
"value": "U",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2522,
"end": 2526,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2525,
"end": 2526,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2525,
"end": 2526,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
}
],
"interpreter": null
}