Как я могу выдать пользовательскую ошибку, когда кто-то пытается изменить объект, который заморожен мной?

Мне нужно заморозить объект / массив, чтобы он не мог быть изменен каким-либо образом. Object.freeze() почти идеально

const arr = [];
const obj = { foo: "bar" };
let frozenArr = Object.freeze(arr);
let frozenObj = Object.freeze(obj);

// Uncaught TypeError: Cannot add property 0, object is not extensible
frozenArr.push('abc');

// Uncaught TypeError: Cannot add property x, object is not extensible
frozenObj.x = 'abc';

Проблема в том, что я хотел бы вызвать пользовательскую ошибку, которая объяснит разработчику, ПОЧЕМУ объект заморожен, как с ним работать и т. Д...

Я думал об использовании Proxy или же Object.defineProperties() и вручную выбрасывать ошибки в сеттеры, но я не хочу изобретать велосипед, поэтому мой вопрос здесь. Может быть, у кого-то уже есть решение.

0 ответов

Другие вопросы по тегам