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

Мне нужно заморозить объект / массив, чтобы его нельзя было каким-либо образом изменить.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() и ручном сбрасывании ошибок в установщиках, но я не хочу изобретать велосипед, поэтому мой вопрос здесь.Может быть, у кого-то уже есть решение.

...