typescript - 如何使用从 .d.ts 文件导出的 Typescript 枚举?
问题描述
我有一个自动生成类型的工具(graphql codegen)。在生成的类型定义文件中,它导出一个枚举
export enum DevicesSortField {
Name = 'NAME',
ConfigurationStatus = 'CONFIGURATION_STATUS',
Connectivity = 'CONNECTIVITY'
}
如果我尝试在我的 ts 文件中以某种方式使用枚举,例如在所有情况下切换 case,我会在运行时收到 MODULE_NOT_FOUND 错误。这是因为它试图从 js 转译代码中导入 d.ts 文件。但是根据js代码看不到typings文件!通常,字符串枚举在转译时会转换为对象,但我猜如果枚举位于 .d.ts 文件中,会有不同的行为。我该如何解决这个问题?
解决方案
我通过将其添加到我的 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"
推荐阅读
- javascript - 如果我只知道其中的一部分,我如何获得完整的类名?
- java - Google Cloud postgres 实例无法连接到 Spring Boot 应用程序
- karma-jasmine - 代码覆盖结果显示方法名称为红色,但覆盖了方法定义
- javascript - 三分之二更改浏览器后退按钮的功能
- javascript - 如何将不同的名称放入自动生成的文本框中,以便我可以使用复选框将文本放入其中
- python - 使用 None 重塑张量以获得批量大小
- python - 解码/编码外来字符/UnicodeEncodeError:'charmap'编解码器
- javascript - 我们可以使用 .filter() 函数和搜索属性的条件规则吗?
- bash - 在 bash shell 中打印文件数
- spring - 即使健康状态为“Down”,Spring Boot Admin Wallboard 磁贴也是绿色的