1

我使用 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'
}
4

1 回答 1

3

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

./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
于 2021-03-21T03:47:43.103 回答