跳到主要内容

deepFreeze()

function deepFreeze<T>(target): ReadonlyDeep<T>;

Defined in: object/deepFreeze.ts:23

深度冻结对象及其所有嵌套属性,使其不可修改 递归遍历对象的所有属性,对每个对象和函数属性调用 Object.freeze()

Type Parameters

Type ParameterDescription
T extends object对象类型

Parameters

ParameterTypeDescription
targetT要深度冻结的对象

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:** 原始类型(stringnumberboolean等)和 null 值不会被冻结
**Note:** 函数对象也会被冻结,防止修改其属性
**Note:** 如果对象已经被冻结,会直接返回原对象
**Note:** 使用 type-fest 的 ReadonlyDeep 类型确保类型安全