Apollo toolingでTypeScriptのクライアントの型定義を自動生成
GraphQLのスキーマを定義してTypeScriptのクライアントから利用する場合、型定義をなんとかしないといけない。 GraphQLのスキーマから作成するツールがいくつかある。クライアントライブラリとしてApolloのものを試した。 apollo.config.jsを書く
clientのスキーマ読み込みの方法は3種類ある
graphqlのエンドポイントから読み込む(GraphQLはそういう仕様がある?)
今回はこれを利用
gqlタグから生成しているようだが、この設定いるの?
ないと生成コマンドがコケる
code:zsh
Generating query files
› Error: Error initializing Apollo GraphQL project "project name": Error: Error in "Loading schema for project name": TypeError: Cannot read property 'foo' of undefined
ローカルにスキーマファイルを置くを使う
npx apollo client:codegen --useReadOnlyTypes --target=typescript
ハマり
クエリの名前に重複があるとエラーが出てしまう
Datetime型がつくりたいんやけど
独自定義の型(scalar DateTimeとか)はデフォルトではanyになる
--passthroughCustomScalarsをつけると自分で定義した名前の型(たとえぼDateTime)の名前にしてくれる
名前がつくだけで定義はないため使えない。自分でglobalな型をつける
code:最終的なコマンド
npx apollo client:codegen --useReadOnlyTypes --target=typescript --passthroughCustomScalars --customScalarsPrefix=GraphQL_
read onlyにするとsortが使えない