【发布时间】:2020-01-28 23:09:18
【问题描述】:
我正在重构我的 redux 代码,我决定用枚举替换作为我的操作类型的字符串。我创建了一个这样的类:
class Enum {
constructor(enumObj) {
const handler = {
get: function(obj, prop) {
if (prop in obj) {
return obj[prop];
}
throw new Error(`${prop} is not a valid enum value for ${enumObj}`);
}
}
return new Proxy(Object.freeze(enumObj), handler)
}
}
export const ActionTypes = new Enum({
SOME_ACTION: 'SOME_ACTION',
ANOTHER_ACTION: 'ANOTHER_ACTION',
});
不幸的是,我的应用程序已经开始崩溃,并显示如下消息
错误:$$typeof 不是 [object Object] 的有效枚举值。
我绝对不是要求获得$$typeof。我对ActionTypes 枚举所做的只是将其作为我发送的消息的一部分,然后在我的 reducer 的 switch 语句中使用它。
我注意到,如果我通过向处理程序的get 添加代码来处理这种情况,我的应用程序就可以正常工作,如果prop == '$$typeof' 则返回string 或undefined。我可以把它留在那里,但我想了解发生了什么。
我的问题是:
-
$$typeof是什么? - 什么可能试图访问它,为什么?
【问题讨论】:
标签: javascript redux enums typeof