我创建了一个枚举,但是我无法在VS15中导入和使用枚举。
这是包含在enums.ts中的枚举:
enum EntityStatus {
New = 0,
Active = 1,
Archived = 2,
Trashed = 3,
Deleted = 4
}
Visual Studio在没有导入的情况下看到此枚举,因此不会产生编译时错误。但是在运行时,会抛出错误
Cannot read property 'Archived' of undefined.
所以现在我尝试导入它,就像导入其他类一样:
import {EntityStatus} from "../../core/enums";
Visual Studio现在提供编译时错误:
"...enums is not a module ..."
那么如何导入枚举?
答案 0 :(得分:62)
我错过了导出关键字:
export enum EntityStatus {
New = 0,
Active = 1,
Archived = 2,
Trashed = 3,
Deleted = 4
}
然后它按预期工作。
答案 1 :(得分:13)
请试试这个。它对我有用
enums.ts
export enum Category {Cricket,Tennis,Golf,Badminton}
并在必需的.ts文件中导入,如下所示:
import {Category} from './enums'
答案 2 :(得分:13)
当您在其中一个TypeScript声明文件(Cannot read property 'Foo' of undefined.
)中定义Enum时,您将得到相同的*.d.ts
运行时错误,因为这些文件无法传输到JavaScript中。
可以找到示例应用的更多详细信息here。
答案 3 :(得分:7)
刚遇到过类似的事情。就我而言,我必须确保导出的枚举名称与文件名不同。
即
在文件access-mode.ts中导出枚举AccessMode会失败。 在文件access-modes.ts中导出枚举AccessMode可以工作。
答案 4 :(得分:0)
正如@Sachin Kalia所说,我在进口方面遇到了问题。
我更改了此内容
import {MessageAction, MessageDTO} from '../../../generated/dto';
对此:
import {MessageDTO} from '../../../generated/dto';
import {MessageAction} from '../../../generated/dto'
MessageAction是我的枚举。
答案 5 :(得分:-2)
遇到类似问题。对我来说,删除名称 Enum 有效。
之前:
<块引用>export enum ContentStatusEnum
{
New = 0,
Saved = 1,
Ready = 2,
Sent = 3,
Cancel = 4,
OnError = 5
}
之后:
<块引用>export enum ContentStatus
{
New = 0,
Saved = 1,
Ready = 2,
Sent = 3,
Cancel = 4,
OnError = 5
}