简体   繁体   中英

Is it possible to use Graphql generated schema as Flow definitions?

I have a project that uses the convo GraphQL , Relay and Flow . Is there a way to use GraphQL schema to feed Flow so the React props can be typed without redeclaring the types?

For Relay I'm already using the script that generates two files: schema.json and schema.graphql . The Babel plugin uses schema.json to translate the queries into javascript.

The other file, schema.graphql looks similar to Flow syntax definition for types, but there are differences. I've tried once to import type {Definition} from "./schema.graphql" from it but was failing silently.

The problem with that is GraphQL scalar-types can be used to represent values in various formats and they do not inherit from a base type you could fall back to for flow.

Scalar can not only verify a "string" but "string of 32 hexadecimal digits". It's not possible to declare this kind of type in flow.

Here are some alternatives: babel-plugin-typecheck , json-to-flow

So after a while I decided to tackle this since our project started to grow and we started to loosen our types. In the end the simplest solution has been to grab the printerSchema and modify it so it outputs flow friendly text, save it to a .js file and point libraries to there.

I'll try to post it in github in a later date

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM