我有枚举:
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
关键字)时,它的工作非常完美。请解释一下,我做错了什么以及为什么我不能像类一样导入枚举?
答案 0 :(得分:2)
此错误通常绑定到您的IDE:让我们以Visual Studio代码为例(我正在使用它,显然你也是这样)
创建文件时,VSCode会将其添加到索引中。它允许您使用CtrlP打开文件。
但是当你移动它时,VSCode不会重建它的索引。这意味着它从错误的位置导入您的文件。
它将按定义检测它,不会抛出任何错误(因为对他来说,他的索引是最新的),但在编译时问题会弹出。
为避免这种情况,您可以通过重新加载VSCode(关闭它,或点击命令快捷方式(F1)并键入“reload”)来重建索引,或者您可以使用插件,例如 {{3} } ,这对移动文件非常有用。
答案 1 :(得分:0)
在您的服务/组件中,只需执行“枚举=枚举”即可:
roles = Roles