首页 > 解决方案 > GraphQL:是否有相当于 TypeScript 的“未知”?

问题描述

在 GraphQL 中,我有几个支持分页的查询。查询接受一个cursor参数,并返回一个nextCursor参数。

的类型对cursor/nextCursor消费者来说并不重要。它可能是一个NumberString一个对象,甚至可能是一个对象——它只是一个客户不应该关心的实现细节。不同的查询甚至可能使用不同的游标类型。

有没有办法在 GraphQL 中对此进行建模?

在 TypeScript 中,有一个unknown类型,它基本上说“我不知道这是什么类型,但没关系,我不需要知道”。

标签: typescriptgraphqlapollo-servergraphql-js

解决方案


我想我找到了我要找的东西:自定义标量
https ://www.apollographql.com/docs/apollo-server/schema/custom-scalars/

例子:

scalar Cursor
type Query {
  getStrings(count: Int, cursor: Cursor): Result!
}
type Result {
  strings: [String]!
  nextCursor: Cursor
}

自定义标量类型可以是任何东西——消费者不需要知道。服务器决定如何处理值(序列化、反序列化等)。


推荐阅读