【问题标题】:Graphql Codegen - Enum with custom key => valueGraphql Codegen - 具有自定义键 => 值的枚举
【发布时间】:2021-04-07 16:09:42
【问题描述】:

我使用 graphql-codegen 生成类型文件。

例如,假设我的 schema.graphql 文件中有以下内容:

enum cities {
 JOHANNESBURG
 CAIRO
 NEW_YORK
 LONDON
 BEIJING
}

我的generated-types.ts文件中的输出如下:

export enum cities {
 Johannesburg = 'JOHANNESBURG'
 Cairo = 'CAIRO'
 NewYork = 'NEW_YORK'
 London = 'LONDON'
 Beijing = 'BEIJING'
}

有没有办法让我在 codegen 运行之前“覆盖”枚举的值?也许如下(我显然尝试过):

enum cities {
 JOHANNESBURG: 'JNB'
 CAIRO: 'CAI'
 NEW_YORK: 'NYC'
 LONDON: 'LON'
 BEIJING: 'BEI'
}

这又应该产生:

export enum cities {
 Johannesburg = 'JNB'
 Cairo = 'CAI'
 NewYork = 'NYC'
 London = 'LON'
 Beijing = 'BEI'
}

【问题讨论】:

    标签: enums graphql graphql-codegen


    【解决方案1】:

    不确定我是否为时已晚,但您可能可以使用 enumValues 自定义您的内部枚举值。这是documentation。例如:

    ./types.ts

    export enum cities {
     Johannesburg = 'JNB'
     Cairo = 'CAI'
     NewYork = 'NYC'
     London = 'LON'
     Beijing = 'BEI'
    }
    

    ./codegen.yml

    generates:
      src/graphql.types.ts:
        config:
          useIndexSignature: true
          enumValues:
            cities: ./types#cities // path to your custom types
        plugins:
          - typescript
          - typescript-resolvers
    

    【讨论】:

    • 谢谢!这个答案正是我将我的 graphql 端点从无头 wordpress 迁移到 onegraph 后所需要的。前者使用实际字符串名称作为枚举值,而后者使用数字枚举。 Apollo 不喜欢数字枚举,甚至在此处创建了一个关于它的线程 stackoverflow.com/questions/66929685/…
    猜你喜欢
    • 2019-10-19
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2021-09-24
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多