{ "type": "File", "start": 0, "end": 59, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 3, "column": 18 } }, "program": { "type": "Program", "start": 0, "end": 59, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 3, "column": 18 } }, "sourceType": "module", "body": [ { "type": "ClassDeclaration", "start": 0, "end": 17, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 17 } }, "id": { "type": "Identifier", "start": 6, "end": 7, "loc": { "start": { "line": 1, "column": 6 }, "end": { "line": 1, "column": 7 }, "identifierName": "C" }, "name": "C" }, "typeParameters": { "type": "TypeParameterDeclaration", "start": 7, "end": 14, "loc": { "start": { "line": 1, "column": 7 }, "end": { "line": 1, "column": 14 } }, "params": [ { "type": "TypeParameter", "start": 8, "end": 10, "loc": { "start": { "line": 1, "column": 8 }, "end": { "line": 1, "column": 10 } }, "name": "T", "variance": { "type": "Variance", "start": 8, "end": 9, "loc": { "start": { "line": 1, "column": 8 }, "end": { "line": 1, "column": 9 } }, "kind": "plus" } }, { "type": "TypeParameter", "start": 11, "end": 13, "loc": { "start": { "line": 1, "column": 11 }, "end": { "line": 1, "column": 13 } }, "name": "U", "variance": { "type": "Variance", "start": 11, "end": 12, "loc": { "start": { "line": 1, "column": 11 }, "end": { "line": 1, "column": 12 } }, "kind": "minus" } } ] }, "superClass": null, "body": { "type": "ClassBody", "start": 15, "end": 17, "loc": { "start": { "line": 1, "column": 15 }, "end": { "line": 1, "column": 17 } }, "body": [] } }, { "type": "FunctionDeclaration", "start": 18, "end": 40, "loc": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 22 } }, "id": { "type": "Identifier", "start": 27, "end": 28, "loc": { "start": { "line": 2, "column": 9 }, "end": { "line": 2, "column": 10 }, "identifierName": "f" }, "name": "f" }, "generator": false, "expression": false, "async": false, "typeParameters": { "type": "TypeParameterDeclaration", "start": 28, "end": 35, "loc": { "start": { "line": 2, "column": 10 }, "end": { "line": 2, "column": 17 } }, "params": [ { "type": "TypeParameter", "start": 29, "end": 31, "loc": { "start": { "line": 2, "column": 11 }, "end": { "line": 2, "column": 13 } }, "name": "T", "variance": { "type": "Variance", "start": 29, "end": 30, "loc": { "start": { "line": 2, "column": 11 }, "end": { "line": 2, "column": 12 } }, "kind": "plus" } }, { "type": "TypeParameter", "start": 32, "end": 34, "loc": { "start": { "line": 2, "column": 14 }, "end": { "line": 2, "column": 16 } }, "name": "U", "variance": { "type": "Variance", "start": 32, "end": 33, "loc": { "start": { "line": 2, "column": 14 }, "end": { "line": 2, "column": 15 } }, "kind": "minus" } } ] }, "params": [], "body": { "type": "BlockStatement", "start": 38, "end": 40, "loc": { "start": { "line": 2, "column": 20 }, "end": { "line": 2, "column": 22 } }, "body": [], "directives": [] } }, { "type": "TypeAlias", "start": 41, "end": 59, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 18 } }, "id": { "type": "Identifier", "start": 46, "end": 47, "loc": { "start": { "line": 3, "column": 5 }, "end": { "line": 3, "column": 6 }, "identifierName": "T" }, "name": "T" }, "typeParameters": { "type": "TypeParameterDeclaration", "start": 47, "end": 54, "loc": { "start": { "line": 3, "column": 6 }, "end": { "line": 3, "column": 13 } }, "params": [ { "type": "TypeParameter", "start": 48, "end": 50, "loc": { "start": { "line": 3, "column": 7 }, "end": { "line": 3, "column": 9 } }, "name": "T", "variance": { "type": "Variance", "start": 48, "end": 49, "loc": { "start": { "line": 3, "column": 7 }, "end": { "line": 3, "column": 8 } }, "kind": "plus" } }, { "type": "TypeParameter", "start": 51, "end": 53, "loc": { "start": { "line": 3, "column": 10 }, "end": { "line": 3, "column": 12 } }, "name": "U", "variance": { "type": "Variance", "start": 51, "end": 52, "loc": { "start": { "line": 3, "column": 10 }, "end": { "line": 3, "column": 11 } }, "kind": "minus" } } ] }, "right": { "type": "ObjectTypeAnnotation", "start": 57, "end": 59, "loc": { "start": { "line": 3, "column": 16 }, "end": { "line": 3, "column": 18 } }, "callProperties": [], "properties": [], "indexers": [], "exact": false } } ], "directives": [] } }