Я делаю рефакторинг своего редукционного кода и решил заменить строки, служащие моими типами действий, на enum. Я создал такой класс:
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',
});
К сожалению, мое приложение начало обрабатывать sh с сообщением типа
Ошибка: $$ typeof не является допустимым значением перечисления для [object Object].
Я определенно не запрашиваю получение $$typeof
. Все, что я делаю с перечислением ActionTypes
, включает это как часть моих отправленных сообщений, а затем использую его в выражении-переключателе в моем редукторе.
Я заметил, что мое приложение работает нормально, если я обработаю этот случай добавление кода к get
обработчика, который возвращает string
или undefined
, если prop == '$$typeof'
. Я мог бы просто оставить это там, но я хочу понять, что происходит.
Мой вопрос:
- Что
$$typeof
? - Что может пытаться получить к нему доступ и почему?