Graphql Codegen - 具有自定义键 => 值的枚举

tec*_*mic 2 enums graphql graphql-codegen

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

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

enum cities {
 JOHANNESBURG
 CAIRO
 NEW_YORK
 LONDON
 BEIJING
}
Run Code Online (Sandbox Code Playgroud)

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

export enum cities {
 Johannesburg = 'JOHANNESBURG'
 Cairo = 'CAIRO'
 NewYork = 'NEW_YORK'
 London = 'LONDON'
 Beijing = 'BEIJING'
}
Run Code Online (Sandbox Code Playgroud)

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

enum cities {
 JOHANNESBURG: 'JNB'
 CAIRO: 'CAI'
 NEW_YORK: 'NYC'
 LONDON: 'LON'
 BEIJING: 'BEI'
}
Run Code Online (Sandbox Code Playgroud)

这又应该产生:

export enum cities {
 Johannesburg = 'JNB'
 Cairo = 'CAI'
 NewYork = 'NYC'
 London = 'LON'
 Beijing = 'BEI'
}
Run Code Online (Sandbox Code Playgroud)

Ewe*_*Min 7

不确定我是否太晚了,但您可能可以使用 来自enumValues定义内部枚举值。这是文档。例如:

./types.ts

export enum cities {
 Johannesburg = 'JNB'
 Cairo = 'CAI'
 NewYork = 'NYC'
 London = 'LON'
 Beijing = 'BEI'
}
Run Code Online (Sandbox Code Playgroud)

./codegen.yml

generates:
  src/graphql.types.ts:
    config:
      useIndexSignature: true
      enumValues:
        cities: ./types#cities // path to your custom types
    plugins:
      - typescript
      - typescript-resolvers
Run Code Online (Sandbox Code Playgroud)

  • 为什么 codegen 无法从 GraphQL 中设置的指定值派生出值?手动创建和映射值违背了自动生成您需要的相同值的目的。 (7认同)