【问题标题】:const enum in typescript (tsc.js vs typescript.js)typescript 中的 const 枚举(tsc.js 与 typescript.js)
【发布时间】:2016-09-27 23:30:30
【问题描述】:

我在打字稿中有一个const enum

const enum LogLevel {
    TRACE = 0,
    DEBUG = 1,
    INFO = 2,
    WARN = 3,
    ERROR = 4,
    SILENT = 5
}

基于打字稿规范,以下字段:

private foo: number = LogLevel.DEBUG;

应该编译为:

this.foo = 1 /* DEBUG */;

当我从命令行 (Windows) 使用 tsc 时,它按预期工作。但是当它在 webpack 项目中使用awesome-typescript-loader 编译时(它使用 node_modules 中的 typescript.js,而不是 tsc 使用的 tsc.js),则枚举常量不会被内联:

this.foo = LogLevel.DEBUG;

tsc 和节点模块版本相同(2.0.2)。

我认为两者之间应该没有区别。有人知道为什么吗?

【问题讨论】:

    标签: typescript webpack


    【解决方案1】:

    检查您的 tsconfig.json 文件。如果存在名为“preserveConstEnums”的设置,请将值设置为“false”。

    我检查了 typescript 2.0.3 NPM 包,我只能在 bundle.js 中看到静态数字。

    【讨论】:

      【解决方案2】:

      原来是由 tsconfig.json 中的declaration 选项引起的。如果设置为false,则两次编译产生上述不一致的结果。但是当它设置为 true 时,它​​会按预期工作。不知道为什么这个标志会对结果产生如此大的影响。

      【讨论】:

        猜你喜欢
        • 2018-02-07
        • 2020-11-17
        • 2020-03-30
        • 2020-08-10
        • 2022-09-23
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        相关资源
        最近更新 更多