如何导入打字稿中定义的枚举?

时间:2018-07-04 16:08:03

标签: typescript

我在Typescript中定义了以下模块

declare module MyTypes {

    export enum MyEnum {
        GOOD = 'Good',
        BAD = 'Bad',
        UNKNOWN = '-'
    }

   export interface MyType1 {
      myType1:string
   }

}

export default MyTypes;

在一个单独的文件中,我将其导入为:

import MyTypes from '/my-types'
import MyType1 = MyTypes.MyType1
import MyEnum = MyTypes.MyEnum

当我在代码中引用MyEnum.GOOD,时,Chrome在控制台上返回了一个异常MyTypes,但未定义。从打字稿中的模块导入枚举的合适方法是什么?

1 个答案:

答案 0 :(得分:2)

使用声明时,打字稿不会创建任何javascript代码,这仅表示该脚本已经存在。使用接口,所有这些都应该工作良好,因为它们只是在运行时被剥离了。另一方面,枚举具有实际的字符串值,例如“ Good”。

您只需删除declare关键字,这一切都应该起作用。

module MyTypes {

    export enum MyEnum {
        GOOD = 'Good',
        BAD = 'Bad',
        UNKNOWN = '-'
    }

   export interface MyType1 {
      myType1:string
   }

}

export default MyTypes;

仅供参考,您在javascript中的枚举应如下所示:

export var MyEnum;
(function (MyEnum) {
    MyEnum["GOOD"] = "Good";
    MyEnum["BAD"] = "Bad";
    MyEnum["UNKNOWN"] = "-";
})(MyEnum || (MyEnum = {}));