2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

graphql-toolsでDateTimeなど独自の型に対応する。

Posted at

説明

graphql-toolsでGraphQLのスキーマからTypeScrptの型を生成しているんですが、GraphQLはStringやIntなど最低限の型しかなく、日付のDateですらデフォルトでは存在してません。

なのでDateTimeを独自の型として定義し、JavaScriptではDateで表すということをします。

手順

まずこんなGraphQLのスキーマがあるとします。

// 独自の方として宣言
scalar DateTime

type Foo {
  id: ID!
  name: String
  createdAt: DateTime
}

そしてgraphql-toolsでTypeScriptの型を生成します。
ここでポイントは--passthroughCustomScalarsです。これをつけると独自の型をそのままのTypeScriptの型として生成します。

$ apollo client:codegen --target typescript --passthroughCustomScalars

こんな型ができます。
しかしTypeScriptは独自に定義したDateTimeという型を知りません。

export interface Foo {
  __typename: "Foo";
  id: string;
  name: string;
  createdAt: DateTime;
}

なのでDateTimeが何かを定義してあげます。

types.d.ts
declare type DateTime = string;

これでDateTimeの型を扱えるようになりました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?