将枚举从Typescript转换为JavaScript时出错

时间:2018-11-07 20:06:45

标签: javascript typescript enums

我在Typescript中有一个枚举

export const enum CarType {
    SED = "Sedan"
}

构建后的JavaScript代码:

"use strict";
Object.defineProperty(exports,"_esModule, { value: true })

因此,基本上js代码没有逻辑,而是只有.d.ts文件具有相同的逻辑。 当我使用tsc命令构建它并将JavaScript代码导出到react应用时,在访问该枚举时,例如:CarType.SED,它给出了类似-Cannot read property SED of undefined

的错误。

可能是相同的原因。我知道打字稿有一个声明文件(扩展名为.ts)。如何在纯JS项目中使用它?

2 个答案:

答案 0 :(得分:1)

来自documenation

  

Const枚举只能使用常量枚举表达式,并且与常规枚举不同,它们在编译过程中会被完全删除。 Const枚举成员在使用站点内联。这是可能的,因为const枚举不能具有计算所得的成员。

删除const关键字应该可以。仅当您在另一个TypeScript文件中使用枚举时,内联才有效。

答案 1 :(得分:0)

您可以将编译器选项(TSC options)“ preserveConstEnums”设置为true:

tsconfig.json:

{
  "compilerOptions": {
    "preserveConstEnums": true,
    ...
  },
  ...
}

或命令行:

tsc --preserveConstEnums true path/to/some_file.ts

constant enum spec