Typescript GraphQL 等效于 EnumSet

Posted

技术标签:

【中文标题】Typescript GraphQL 等效于 EnumSet【英文标题】:Typescript GraphQL equivalent to EnumSet 【发布时间】:2020-10-26 15:49:58 【问题描述】:

我有一个用例,只允许将一组特定的枚举值输入到突变/显示的输入中。我不太确定如何最好地处理这个问题。

鉴于以下情况:

import gql from 'graphql-tag';

export default gql`
  enum DayOfWeek 
    MONDAY
    TUESDAY
    WEDNESDAY
    THURSDAY
    FRIDAY
    SATURDAY
    SUNDAY
  
`;

我想限制架构特定位置的选择值。

我希望我可以这样做:

import gql from 'graphql-tag';

export default gql`
  union Weekday = MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY
  union Weekend = SATURDAY | SUNDAY

架构似乎永远不会验证。我也尝试将这些引用为DayOfWeek.MONDAY 等,但无济于事。

有没有办法模仿这个功能?

【问题讨论】:

【参考方案1】:

简短的回答:不。目前,GraphQL 仅支持将对象类型用于联合,并且没有用于访问现有枚举类型的单个枚举值的语法。您需要显式创建三个单独的枚举类型:

enum Weekday 
  MONDAY
  TUESDAY
  WEDNESDAY
  THURSDAY
  FRIDAY


enum Weekend 
  SATURDAY
  SUNDAY


enum DayOfWeek 
  MONDAY
  TUESDAY
  WEDNESDAY
  THURSDAY
  FRIDAY
  SATURDAY
  SUNDAY

【讨论】:

谢谢,我也是这样阅读文档的。是否有任何已知的钩子可以帮助验证 Weekday 和 Weekend 是否“有效”?我目前最好的想法是在应用启动时编写自定义代码来验证一切是否处于良好状态。 您可以编写自定义验证规则。示例规则可以在here 找到。验证规则使用的访问者模式的简要说明可以在 here 找到。

以上是关于Typescript GraphQL 等效于 EnumSet的主要内容,如果未能解决你的问题,请参考以下文章

typescript 手动等效于MaterialModule

TypeScript 中的 querySelectorAll 等效项

TypeScript hasOwnProperty 等效项

C# 等效于 Java 的 Arrays.fill() 方法[重复]

graphql 查询的 typescript 类型声明错误

graphql + mongoose + typescript,如何减少重复的模型定义