网站搜索

TypeScript - 如何从模块中导出枚举,以便在运行时可以导入和解析


我在一个名为“common”的共享模块中有以下枚举:

export enum TranslationValue {
  VH = -2,
  VL = 1,
  Neutral = 0,
  AL = 1,
  AH = 2,
  NA = "NA",
  IR = "IR"
}

当我使用选项 declaration: true 编译此文件时,我在输出的 d.ts 文件中得到以下内容:

export declare enum TranslationValue {
    VH = -2,
    VL = 1,
    Neutral = 0,
    AL = 1,
    AH = 2,
    NA = "NA",
    IR = "IR"
}

然后另一个包使用这个共享模块,并给我一个运行时错误:

尝试导入错误:'TranslationValue' 没有从 '@gemini/common' 导出

这里的问题是什么?我理解 declare 关键字意味着我基本上是在告诉编译器这个枚举将在运行时的其他地方定义,但我不知道如何解决这个问题。我不想在任何地方重新定义这个枚举。我只希望它被导出,以便可以直接从公共模块导入和使用。

这是我用于我的 tsconfig 的内容:

{
  "compilerOptions": {
    "module": "commonjs",
    "lib": ["esnext"],
    "target": "esnext",
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true
    "declaration": true,
    "outDir": "dist",
    "rootDir": "src",
    "sourceMap": true
  }
}