枚举未定义

时间:2018-04-13 07:47:23

标签: angular typescript enums

我有枚举:

export enum Roles {
  user = 10,
  editor = 30,
  admin = 50,
}

我将其导入我的一项服务:

import { Roles } from '../enums/roles';

并在服务方法中使用:

  this.writeRole(
    Roles.user,
  );

当我在我的应用程序中调用此方法时,在控制台中我收到错误:Cannot read property 'user' of undefined

但是当我在服务而不是导入时简单地编写相同的枚举(但没有export关键字)时,它的工作非常完美。请解释一下,我做错了什么以及为什么我不能像类一样导入枚举?

2 个答案:

答案 0 :(得分:2)

此错误通常绑定到您的IDE:让我们以Visual Studio代码为例(我正在使用它,显然你也是这样)

创建文件时,VSCode会将其添加到索引中。它允许您使用CtrlP打开文件。

但是当你移动它时,VSCode不会重建它的索引。这意味着它从错误的位置导入您的文件。

它将按定义检测它,不会抛出任何错误(因为对他来说,他的索引是最新的),但在编译时问题会弹出。

为避免这种情况,您可以通过重新加载VSCode(关闭它,或点击命令快捷方式(F1)并键入“reload”)来重建索引,或者您可以使用插件,例如 {{3} } ,这对移动文件非常有用。

答案 1 :(得分:0)

在您的服务/组件中,只需执行“枚举=枚举”即可:

roles = Roles