Upgrade to Pro — share decks privately, control downloads, hide ads and more …

意外と難しいGraphQLのスカラー型

Avatar for uhyo uhyo
September 22, 2025

 意外と難しいGraphQLのスカラー型

2025-09-22 『TypeScriptのスキーマ駆動開発』実践事例 LT

Avatar for uhyo

uhyo

September 22, 2025
Tweet

More Decks by uhyo

Other Decks in Technology

Transcript

  1. 注意が必要なID型 const data = useQuery({ query, variables: { inputId: 12345

    }, }); data.outputId 7 このIDは string | number になるのが望ましい (シリアライズ前のため) このIDは string になるのが望 ましい (シリアライズ済のため)
  2. GraphQL Codegenでの出し分け const data = useQuery({ query, variables: { inputId:

    12345 }, }); data.outputId 10 ここではinput用の型を使用 (string | number) ここではoutput用の型を使用 (string)
  3. めでたし……と思いきや サーバー側(GraphQLのリゾルバー定義) 向けの型もGraphQL Codegenで出力すると…… deleteUser: (_, { id }) =>

    { return userStore.delete(id); } 12 入力なのでinput用の型が使用 されるが、正しい型はstring (string | numberではない!) ※逆に、resolverの実装から出力されるIDは string | number型が正しい
  4. GraphQL Codegen向けの正しい設定 こうする必要がある。 どうしてこうなった…… scalars: { //クライアント用 ID: { input:

    ‘string | number’, output: ‘string’ } } 13 scalars: { //サーバー用 ID: { input: ‘string’, output: ‘string | number’ } }