Typescript kompilerer ikke enums til tall
Jeg prøver å bruke TypeScript for å skrive JSON-data med et skjema, så jeg trenger at TypeScript-kompilatoren kompilerer enums til tall i JS-utdataene, men jeg får det ikke til å fungere.
Jeg har allerede prøvd en god del ting, dette innlegget ligner på problemet jeg har, men jeg bruker ikke awesome-typescript-loader. Jeg har også prøvd alt i dette Stack Overflow-innlegget, men uten hell. Min ts-config er nedenfor
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": false,
"sourceMap": false
},
"include": [
"src/**/*"
]
}
Jeg kjører rett og slett tsc på kommandolinjen i rotkatalogen, det kompilerer alt, men enums blir kompilert som MyEnum_1.MyEnum.FirstValue. Andre ting jeg har prøvd;
- Endre modulen til ulike forskjellige alternativer
- Endre målet til ulike forskjellige alternativer
- Legge til forskjellige alternativer og leke med forskjellige lib-verdier.
Jeg kjører tsc -v 3.6.4 og har gått tom for ideer, har noen hatt et lignende problem?
REDIGER: Nedenfor er et eksempel på typen enum jeg importerer
export enum MyEnum {
Undefined,
FirstValue,
SecondValue,
ThirdValue
}
REDIGER: Et eksempel på en TypeScript-fil ville være...
import { MyEnum } from "../../src/models/MyEnum";
import { ItemType } from "../../src/models/ItemType";
var item: ItemType = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
Jeg ville forvente at dette kompilerer til...
"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
};
I stedet kompilerer det til;
"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
};
Jeg bryr meg stort sett ikke om hvordan det kompileres så lenge enumen kompileres til et tall.
Svar #1
Du ser etter konstante enums:
export const enum MyEnum {
Undefined,
FirstValue,
SecondValue,
ThirdValue
}
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
kompileres til
var MyEnum;
(function (MyEnum) {
// stuff
})(MyEnum || (MyEnum = {}));
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": 1 /* FirstValue */
};
og hvis du vil hoppe over enum-deklarasjonen helt, gjør den også ambient:
export declare const enum MyEnum {
...
}
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": MyEnum.FirstValue
}
gir bare
var item = {
"id": "00000000-0000-0000-0000-000000000000",
"value": 1 /* FirstValue */
};
