Comments (10)
I'd say typegql class itself might be good interface.
You can also try prisma bindings for creating interface for exiting graphql api
from typegql.
I thought about using the class but the difference is an interface is only used by the compiler while a class generates code.
So if you were using the class on a client they would have to include the class code in their bundle
from typegql.
Do you think that would be helpful for you - https://github.com/dangcuuson/graphql-schema-typescript
from typegql.
Unfortunately that looks like it it was created for the server side resolver typings, not client side code like apollo-codegen.
This article talks about the difference between and interface and a class https://toddmotto.com/classes-vs-interfaces-in-typescript#using-typescript-interface
Seems like you'd have to generate .graphql files so Apollo Codegen can use them or somehow generate a JSON representation and use a tool like this http://json2ts.com/
from typegql.
The recommended way of working with GraphQL and TypeScript on client side:
- Run the GraphQL API server (created with
typegql
or sth) - Generate the
schema.json
fromlocalhost:PORT
usingapollo-codegen
2*) Use theschema.json
with vscode plugin for graphql intellisense - Use
apollo-codegen
to generate TypeScript interfaces describing the queries you use on client side usinggql
template tag in code (and using the generatedschema.json
). - Use this interfaces to annotate e.g.
graphql
generic HOC in React.
Sample command that creates schema.json
and generate interfaces for queries/mutations:
apollo-codegen introspect-schema http://localhost:3000/graphql --output ./src/graphql/schema.json && apollo-codegen generate src/graphql/**/*.ts --schema ./src/graphql/schema.json --target typescript --output ./src/graphql/types.ts
from typegql.
Thank you for the help! For part 3 are you saying you need to write some client code using gql then combine that with the schema.json? Or where is the gql code located?
from typegql.
No, you this is the normal code you write on the client - the queries and mutations. You want to generate TypeScript interfaces describing the shape of args and response, don't you?
from typegql.
Ideally I'd just write a typeql server and from that alone I could generate interfaces a client could use. For example when I write an apollo-server it can generate the schema.json and it has the gql code that apollo-codegen needs all in one.
from typegql.
This is the part - generate schema.json from apollo-server:
apollo-codegen introspect-schema http://localhost:3000/graphql --output ./src/graphql/schema.json
For client you need to write in your frontend app:
const myQuery = gql`
query {
myQuery {
fieldOne
other {
fieldTwo
}
}
}
`;
And then you can run apollo-codegen generate src/graphql/**/*.ts --schema ./src/graphql/schema.json --target typescript --output ./src/graphql/types.ts
to have interface myQuery { ... }
inside types.ts
.
I could generate interfaces a client could use.
Nope, you can't. The GraphQL schema by itself is the interfaces the describe the API that server expose and client can use.
from typegql.
Thank you for your help!
from typegql.
Related Issues (20)
- fields defined on a third level and farther of function prototype chain are not registered into schema HOT 2
- [question] returning an instance of a class HOT 4
- make InputField nullable by default HOT 2
- graphql-tools 3.0.2 HOT 2
- allow to register Arg at runtime dynamically HOT 7
- Example of having resolvers in separate files HOT 4
- feature request: @MutationField and @QueryField HOT 7
- Falsy values are being treated as `null`
- Differences from type-graphql HOT 2
- feature request: browser shim
- default params break the compileFieldArgs function
- support Date type by default HOT 4
- mixin support HOT 4
- pls update graphql dependency to latest v14 HOT 1
- Can I somehow pass context directly to resolver? HOT 1
- Pagination Count in Query HOT 1
- Question: Why is the Arg decorator not nullable by default? HOT 2
- Arguments To Query Type Not Exposed/Compiled? HOT 2
- How to use mutation with array? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typegql.