【问题标题】:Error on converting enum from Typescript to JavaScript将枚举从 Typescript 转换为 JavaScript 时出错
【发布时间】:2018-11-07 20:06:44
【问题描述】:

假设我在 Typescript 中有一个枚举

export const enum CarType {
    SED = "Sedan"
}

构建后的 JavaScript 代码:

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

所以基本上 js 代码没有逻辑,而只有 .d.ts 文件具有相同的逻辑。 当我使用 tsc 命令构建它并将 JavaScript 代码导出到反应应用程序时,同时访问此枚举,如:CarType.SED,它给出了一个错误,如 - Cannot read property SED of undefined

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

【问题讨论】:

  • 你也应该发布你的javascript代码
  • @Florian,也添加了 JS 代码

标签: javascript typescript enums


【解决方案1】:

来自documenation

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

删除const 关键字应该可以工作。只有在另一个 TypeScript 文件中使用枚举时,内联才能起作用。

【讨论】:

    【解决方案2】:

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

    tsconfig.json:

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

    或命令行:

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

    constant enum spec

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2020-08-21
      • 2021-01-04
      • 2021-05-26
      相关资源
      最近更新 更多