我有以下打字稿代码:
// 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"
]
}
现在我不想导出任何模块,而是想生成一个包含所有源代码的自包含文件,所以我可以在浏览器中包含文件。
如何重写/重新构造枚举以避免此编译消息并生成自包含文件?
谢谢,
答案 0 :(得分:1)
现在我不想导出任何模块,而是想生成一个包含所有源代码的自包含文件,所以我可以在浏览器中包含文件。
如果是这种情况,请执行以下操作:
export
file1.ts
修饰符
import
file2.ts
声明
/// <reference path="file1.ts" />
添加到file2.ts
现在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.