GraphQL:是不是有相当于 TypeScript 的“未知”?

Posted

技术标签:

【中文标题】GraphQL:是不是有相当于 TypeScript 的“未知”?【英文标题】:GraphQL: is there an equivalent of TypeScript's "unknown"?GraphQL:是否有相当于 TypeScript 的“未知”? 【发布时间】:2021-05-27 01:16:17 【问题描述】:

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

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

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

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

【问题讨论】:

spec.graphql.org/June2018/#sec-Types ... 什么值得验证? ...使用工会? 【参考方案1】:

我想我找到了我要找的东西:自定义标量: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

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

【讨论】:

类似ID? ...并且[您声称] FE TS 开发人员(消费者)应该使用cursor: any ...嗯,这个著名的 TS 类型安全/不易出错的编码在哪里? ...我不认为它是'只是一个客户不应该关心的实现细节' ...当然,您可以在开发[通用]库期间使用标量...但是对于特定的“实例”,它应该发布假定类型(接受为/验证为)这个标量(int 或 string)使 FE 开发人员能够进行类型安全编码 客户不应该关心价值。他们只是从第一个查询中接收光标,并将其传递给下一个查询。 部分正确...但是 所有 graphql API 参数都应该输入 ...告诉这个 TSLint 与 "no-any": true, "no-unsafe -any": true 配置用户

以上是关于GraphQL:是不是有相当于 TypeScript 的“未知”?的主要内容,如果未能解决你的问题,请参考以下文章

在 GraphQL 中是不是可以在对象类型级别上使用解析器?

typeScrip 类

相当于这个 Json 的 GraphQL 模式?

GraphQL Federation:是不是有 Java Springboot 网关

Facebook 的 Graph API 是不是使用 GraphQL?

对于 AWS amplify 中的模式,graphql 中的数组和映射是不是有标量类型?