首页 > 解决方案 > 如何在 Typescript 中正确定义全局枚举

问题描述

我无法理解在全局定义枚举时缺少什么。

常量.ts

enum CREEP_ROLE {
  HARVESTER = 0,
  BUILDER = 1,
}

main.ts

import './constants'

const test = CREEP_ROLE.HARVESTER;

这是 typescript 编译器将此代码编译成的内容:

var CREEP_ROLE$1;
(function (CREEP_ROLE) {
    CREEP_ROLE[CREEP_ROLE["HARVESTER"] = 0] = "HARVESTER";
    CREEP_ROLE[CREEP_ROLE["BUILDER"] = 1] = "BUILDER";
})(CREEP_ROLE$1 || (CREEP_ROLE$1 = {}));
//# sourceMappingURL=constants.js.map

const test = CREEP_ROLE.HARVESTER;

当我运行生成的文件时,我得到ReferenceError: CREEP_ROLE is not defined. 我错过了什么?

我的 tslint:

{
  "compilerOptions": {
    "module": "esnext",
    "lib": ["esnext"],
    "target": "es2017",
    "moduleResolution": "Node",
    "outDir": "dist",
    "baseUrl": "src/",
    "sourceMap": true,
    "strict": true,
    "experimentalDecorators": true,
    "noImplicitReturns": true,
    "allowSyntheticDefaultImports": true,
    "allowUnreachableCode": false
  },
  "exclude": [
    "node_modules"
  ]
}

标签: typescript

解决方案


导出您的枚举:

export enum CREEP_ROLE {
    HARVESTER = 0,
    BUILDER = 1,
}

然后像这样导入:

import {CREEP_ROLE} from './constants';

推荐阅读