Как использовать перечисление Typescript, экспортированное из файла .d.ts? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть инструмент, который автоматически генерирует типы (graphql codegen). В сгенерированном файле определения типа он экспортирует перечисление

 export enum DevicesSortField {
  Name = 'NAME',
  ConfigurationStatus = 'CONFIGURATION_STATUS',
  Connectivity = 'CONNECTIVITY'
}

Если я пытаюсь каким-либо образом использовать перечисление в моем файле ts, например, в случае переключения во всех случаях, я получаю ошибку MODULE_NOT_FOUND в во время выполнения. Это происходит потому, что он пытается импортировать файл d.ts из js переданного кода. Тем не менее, нет файлов для набора текста, которые можно увидеть по коду js! Обычно строковые перечисления преобразуются в объекты, когда они переносятся, но я предполагаю, что есть другое поведение, если перечисление находится в файле .d.ts. Как мне обойти это?

1 Ответ

0 голосов
/ 21 апреля 2020

Я исправил это, добавив это в свой codegen.yml:

enumsAsTypes: true #needed to be able to compare enum cases in resolvers (since we are using a .d.ts)

, поэтому файл выглядит так:

overwrite: true
schema: "src/components/**/schema.ts"
documents: null
generates:
  src/typings/graphql-auto-codegen.d.ts:
    plugins:
      - "typescript"
      - "typescript-resolvers"
    config:
      useIndexSignature: true #fixes https://github.com/dotansimha/graphql-code-generator/issues/1133
      contextType: ./context#LockhartContext
      enumsAsTypes: true #needed to be able to compare enum cases in resolvers (since we are using a .d.ts)
  ./graphql.schema.json:
    plugins:
      - "introspection"
...