deepFreeze()
function deepFreeze<T>(target): ReadonlyDeep<T>;
Defined in: object/deepFreeze.ts:23
深度冻结对象及其所有嵌套属性,使其不可修改 递归遍历对象的所有属性,对每个对象和函数属性调用 Object.freeze()
Type Parameters
| Type Parameter | Description |
|---|---|
T extends object | 对象类型 |
Parameters
| Parameter | Type | Description |
|---|---|---|
target | T | 要深度冻结的对象 |
Returns
ReadonlyDeep<T>
深度冻结后的只读对象
Examples
const obj = { a: { b: 1 } };
const frozen = deepFreeze(obj);
frozen.a.b = 2; // 抛出错误,对象已被冻结
const arr = [1, { nested: 2 }];
const frozenArr = deepFreeze(arr);
frozenArr[1].nested = 3; // 抛出错误,嵌套对象也被冻结
**Note:** 原始类型(string、number、boolean等)和 null 值不会被冻结
**Note:** 函数对象也会被冻结,防止修改其属性
**Note:** 如果对象已经被冻结,会直接返回原对象
**Note:** 使用 type-fest 的 ReadonlyDeep 类型确保类型安全