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.
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.
- There is no ready-to-use way I'm aware about, but I think you can write babel-plugin for it by yourself – gyzerok Commented Apr 8, 2016 at 7:54
2 Answers
Reset to default 8The 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