如何导入枚举

Gre*_*Gum 60 typescript

我创建了一个枚举,但是我无法在VS15中导入和使用枚举.

这是包含在enums.ts中的枚举:

enum EntityStatus {
     New = 0,
     Active = 1,
     Archived = 2,
     Trashed = 3,
     Deleted = 4
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio在没有导入的情况下看到此枚举,因此不会产生编译时错误.但是在运行时,会抛出错误

 Cannot read property 'Archived' of undefined.
Run Code Online (Sandbox Code Playgroud)

所以现在我尝试导入它,就像导入其他类一样:

 import {EntityStatus} from "../../core/enums";
Run Code Online (Sandbox Code Playgroud)

Visual Studio现在提供编译时错误:

 "...enums is not a module ..."
Run Code Online (Sandbox Code Playgroud)

那么如何导入枚举?

Gre*_*Gum 81

我错过了export关键字:

 export enum EntityStatus {
      New = 0,
      Active = 1,
      Archived = 2,
      Trashed = 3,
      Deleted = 4
 }
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作.

  • 确保将其包含在“*.ts”中。`*.d.ts` 文件将不起作用。我遇到的一个陷阱。 (19认同)

luk*_*355 19

Cannot read property 'Foo' of undefined.当您碰巧在其中一个TypeScript声明文件(*.d.ts)中定义Enum时,您将得到相同的运行时错误,因为这些文件不会传输到JavaScript中.

有关示例应用程序的更多详细信息,请访问此处.

  • 好吧,我也没有。特别是在弄清楚为什么我的枚举没有定义的浪费时间之后:) (2认同)

Sac*_*lia 16

请试试这个.这个对我有用

enums.ts

export enum  Category {Cricket,Tennis,Golf,Badminton}
Run Code Online (Sandbox Code Playgroud)

并在所需的.ts文件导入中,如下所示:

import {Category} from './enums'
Run Code Online (Sandbox Code Playgroud)


Dar*_*har 13

只是跑过类似的东西.就我而言,我必须确保导出的枚举名称与文件名不同.

即.

在文件access-mode.ts中导出枚举AccessMode会失败.在文件access-modes.ts中导出枚举AccessMode可以工作.

  • 令人惊讶的是,它也对我有用。您知道原因吗,为什么会这样? (2认同)