如何导入枚举

时间:2016-07-24 14:25:56

标签: typescript

我创建了一个枚举,但是我无法在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 ..."

那么如何导入枚举?

6 个答案:

答案 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
}