{ "type": "File", "start": 0, "end": 60, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 60 } }, "program": { "type": "Program", "start": 0, "end": 60, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 60 } }, "sourceType": "module", "body": [ { "type": "DeclareFunction", "start": 0, "end": 60, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 60 } }, "id": { "type": "Identifier", "start": 17, "end": 59, "loc": { "start": { "line": 1, "column": 17 }, "end": { "line": 1, "column": 59 }, "identifierName": "foo" }, "name": "foo", "typeAnnotation": { "type": "TypeAnnotation", "start": 20, "end": 59, "loc": { "start": { "line": 1, "column": 20 }, "end": { "line": 1, "column": 59 } }, "typeAnnotation": { "type": "FunctionTypeAnnotation", "start": 20, "end": 59, "loc": { "start": { "line": 1, "column": 20 }, "end": { "line": 1, "column": 59 } }, "typeParameters": null, "params": [ { "type": "FunctionTypeParam", "start": 21, "end": 29, "loc": { "start": { "line": 1, "column": 21 }, "end": { "line": 1, "column": 29 } }, "name": { "type": "Identifier", "start": 21, "end": 22, "loc": { "start": { "line": 1, "column": 21 }, "end": { "line": 1, "column": 22 }, "identifierName": "x" }, "name": "x" }, "optional": false, "typeAnnotation": { "type": "MixedTypeAnnotation", "start": 24, "end": 29, "loc": { "start": { "line": 1, "column": 24 }, "end": { "line": 1, "column": 29 } } } } ], "rest": null, "returnType": { "type": "BooleanTypeAnnotation", "start": 32, "end": 39, "loc": { "start": { "line": 1, "column": 32 }, "end": { "line": 1, "column": 39 } } } } } }, "predicate": { "type": "DeclaredPredicate", "start": 40, "end": 59, "loc": { "start": { "line": 1, "column": 40 }, "end": { "line": 1, "column": 59 } }, "value": { "type": "BinaryExpression", "start": 48, "end": 58, "loc": { "start": { "line": 1, "column": 48 }, "end": { "line": 1, "column": 58 } }, "left": { "type": "Identifier", "start": 48, "end": 49, "loc": { "start": { "line": 1, "column": 48 }, "end": { "line": 1, "column": 49 }, "identifierName": "x" }, "name": "x" }, "operator": "!==", "right": { "type": "NullLiteral", "start": 54, "end": 58, "loc": { "start": { "line": 1, "column": 54 }, "end": { "line": 1, "column": 58 } } } } } } ], "directives": [] } }