Вопрос о гарантии неизменности enum в JS
Здравствуйте! Я интересуюсь, как убедиться, что перечисления в JavaScript не подлежат изменениям. У меня есть такой код:
my.namespace.ColorEnum = {
RED: 0,
GREEN: 1,
BLUE: 2
};
// использование
if (currentColor === my.namespace.ColorEnum.RED) {
// действия
}
Может ли такой подход обеспечить неизменность? Или есть другие методы для достижения этой цели? Ваши советы будут очень полезны!
Можешь создать константы через const и Symbol для уникальности - const RED = Symbol('red'). Или использовать Map с замороженными ключами. В TypeScript есть enum, который компилируется в защищенный код, но на чистом JS комбинация Object.freeze + const переменная - самый надежный вариант.
А что если завернуть в функцию с замыканием? Создаешь IIFE, который возвращает замороженный объект - к оригиналу вообще доступа не будет. Или через Proxy перехватывай попытки изменения и кидай ошибки. Кстати, зачем именно числовые значения? Строки может проще будут?