diff --git a/src/utils/common.ts b/src/utils/common.ts index 1ebb5b5f..b71d4406 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -188,7 +188,12 @@ export function freeze(obj: T, deep?: boolean): T export function freeze(obj: any, deep: boolean = false): T { if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj if (getArchtype(obj) > 1 /* Map or Set */) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any + Object.defineProperties(obj, { + set: {value: dontMutateFrozenCollections as any}, + add: {value: dontMutateFrozenCollections as any}, + clear: {value: dontMutateFrozenCollections as any}, + delete: {value: dontMutateFrozenCollections as any} + }) } Object.freeze(obj) if (deep) each(obj, (_key, value) => freeze(value, true), true)