Date
在后端定义了一个名为 ISO 8601 字符串的自定义标量类型。
在前端“GraphQL 代码生成器”(https://www.graphql-code-generator.com/)用于从模式生成打字稿类型。
codegen.yml
看起来像这样:
overwrite: true
schema: 'http://mybackenurl/graphql'
documents: 'src/**/*.graphql'
generates:
src/generated/graphql.ts:
config:
exposeQueryKeys: true
exposeFetcher: true
fetcher: '../GraphQLFetcher#fetcher'
scalars:
Date: Date
plugins:
- 'typescript'
- 'typescript-operations'
- 'typescript-react-query'
这给出了在 graphql 模式中具有自定义标量类型的所有字段Date
对应于Date
生成的打字稿类型中的打字稿类型的类型。但是在运行时它仍然是一个string
. 如果Date: Date
去掉了配置中标量下的部分,则对应的类型为Any
.
猜测是我们需要指定某种映射器,它将我们从后端获得的 ISO 8601 字符串转换为 typescript Date
,但我不明白这是怎么做到的。