我正在尝试使用Typescript本质上使用模式写入json数据,因此我需要Typescript编译器将枚举编译为js输出中的数字,但是我无法使用它。
我已经尝试了很多事情,this帖子与我遇到的问题类似,但是我没有使用awesome-typescript-loader,我也尝试了所有操作{{3}堆栈溢出,但没有喜悦。我的ts-config在下面
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": false,
"sourceMap": false
},
"include": [
"src/**/*"
]
}
我只是在根目录中的命令行上调用tsc
,它编译所有内容,但枚举被编译为MyEnum_1.MyEnum.FirstValue
。
我尝试过的其他事情;
我正在运行tsc -v 3.6.4,并且用尽了主意,有人遇到过类似的问题吗?
编辑:以下是我要导入的枚举类型的示例
export enum MyEnum {
Undefined,
FirstValue,
SecondValue,
ThirdValue
}
编辑:我的打字稿文件示例是...
import { MyEnum } from "../../src/models/MyEnum";
import { ItemType } from "../../src/models/ItemType";
var item: ItemType = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
我希望它将编译为...
"use strict";
exports.__esModule = true;
var MyEnum_1 = require("../../src/models/MyEnum");
var ItemType_1 = require("../../src/models/ItemType");
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": 1
};
相反,它会编译为;
"use strict";
exports.__esModule = true;
var MyEnum_1 = require("../../src/models/MyEnum");
var ItemType_1 = require("../../src/models/ItemType");
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum_1.MyEnum.FirstValue
};
只要枚举被编译为数字,我几乎不在乎它如何编译。
答案 0 :(得分:2)
您正在寻找const enums:
export const enum MyEnum {
Undefined,
FirstValue,
SecondValue,
ThirdValue
}
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
编译为
var MyEnum;
(function (MyEnum) {
// stuff
})(MyEnum || (MyEnum = {}));
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": 1 /* FirstValue */
};
,如果您想完全跳过枚举声明,请将其也设置为ambient:
export declare const enum MyEnum {
...
}
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
给与
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": 1 /* FirstValue */
};