导出没有模块标志的枚举

时间:2016-02-18 22:31:50

标签: enums typescript

我有以下打字稿代码:

// file1.ts
export enum Status {
    Active = 1,
    NotActive = 0
}

我有其他部分

// file2
import {Status} from "./file1";
...

编译代码时,我收到此消息:

error TS1148: Cannot compile modules unless the '--module' flag is provided. 
Consider setting the 'module' compiler option in a 'tsconfig.json' file.

我的tsconfig文件,以防万一:

{
    "compilerOptions": {
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "outFile": "javascript/app.js",
        "sourceMap": true,
        "target": "es5",
        "declaration": false
    },
    "files": [
        "app.ts"
    ]
}

现在我不想导出任何模块,而是想生成一个包含所有源代码的自包含文件,所以我可以在浏览器中包含文件。

如何重写/重新构造枚举以避免此编译消息并生成自包含文件?

谢谢,

2 个答案:

答案 0 :(得分:1)

  

现在我不想导出任何模块,而是想生成一个包含所有源代码的自包含文件,所以我可以在浏览器中包含文件。

如果是这种情况,请执行以下操作:

  1. export
  2. 中删除file1.ts修饰符
  3. import
  4. 中删除整个file2.ts声明
  5. /// <reference path="file1.ts" />添加到file2.ts
  6. 的顶部

    现在app.js将是file1.ts + file2.ts的连续输出。

答案 1 :(得分:0)

我发现在您的情况下,您似乎没有模块。如果您正在努力将枚举包含在另一个文件(例如组件)中声明的模块中,则可以这样做:

声明您的枚举: import 之后和 @Component 声明之前的组件中,声明您的枚举。不要将您的枚举设为 const

export enum MyEnum { DEFAULT = 'default', WORKING = 'working', COMPLETE = 'complete' }

这使您的组件类可以访问您的枚举,而无需在模块文件中声明该枚举。

导入您的枚举: 在您的模块 imports 中,导入您的枚举并为其指定别名。

import { MyComponent, MyEnum as _myEnum } from "./my-component.component";

重新声明您的枚举:导入之后和 @NgModule 之前的模块中,导出并将枚举声明为 const

export const MyEnum = _myEnum;

现在,当您导入模块时,可以使用MyEnum进行引用。

如果您需要从模板访问枚举,请为枚举提供一个局部类型,该类型是组件类的一部分。在组件类内部声明:

private myEnum = MyEnum;//myEnum is accessible in the template.