Given the following code:
export const FooFoo = buildFoo('Foo') as unknown as (foo: any) => Foo | FooLegacy;
What ast-explorer shows is that the TSUnionType node is on the returnType attribute of the TSFunctionType node:

However when using jscodeshift with recast/ast-types it's being parsed as the following:

instead of being on the tsFunctionTypeNode.returnType.typeAnnotation attribute, it's actually structured as tsFunctionTypeNode.typeAnnotation.typeAnnotation
Given the following code:
What ast-explorer shows is that the

TSUnionTypenode is on thereturnTypeattribute of theTSFunctionTypenode:However when using jscodeshift with recast/ast-types it's being parsed as the following:

instead of being on the
tsFunctionTypeNode.returnType.typeAnnotationattribute, it's actually structured astsFunctionTypeNode.typeAnnotation.typeAnnotation