enum
在运行时在TypeScript中变成了什么?
Fruit.ts
enum Fruit {APPLE, ORANGE};
main.ts
var bowl = [Fruit.APPLE, Fruit.ORANGE];
console.log(bowl);
生成的main.js
文件与.ts
保持一致,但无法正常工作。
答案 0 :(得分:7)
该代码的JS将是:
// Fruit.js
var Fruit;
(function (Fruit) {
Fruit[Fruit["APPLE"] = 0] = "APPLE";
Fruit[Fruit["ORANGE"] = 1] = "ORANGE";
})(Fruit || (Fruit = {}));
// main.js
var bowl = [Fruit.APPLE, Fruit.ORANGE];
console.log(bowl);
您可能正在寻找const enum
:
const enum Fruit {APPLE, ORANGE};
如果你使用它,那么enum的值将被内联到JavaScript:
// Fruit.js: empty.. nothing will be in here
// main.js
var bowl = [0 /* APPLE */, 1 /* ORANGE */];
console.log(bowl);
当您的应用程序中没有必要生成常规枚举的JS代码时,您可以使用const enum
。
答案 1 :(得分:-1)
如果您想在fruit.ts之外使用Fruit
,那么您需要将其导出...
export enum Fruit {APPLE, ORANGE};
在您想要使用它的另一个文件中,您需要引用它...
import {Fruit} from './fruit';
var bowl = [Fruit.APPLE, Fruit.ORANGE];
// btw, love the name "bowl" here
此外,为了使用import
,您需要在tsconfig.json中指定模块类型(或通过cmd行参数)