export declare type DeepModifier = (draft: T) => void; export declare type SafeDeepModifier = (draft: T) => undefined; export interface SafeForkResult { get: () => Readonly; set: (modifier: DeepModifier) => Readonly; } /** * @param origObj 原始对象 * @returns 一个对象,包含 get 和 set 两个方法。get 方法返回修改过的新对象(不保证和原对象不相等),set 方法接受一个 modifier 函数:该函数的参数是一个 draft 对象,可以直接修改 draft 对象。set 方法也返回经过修改的新的对象。原始对象始终不变。注意,你不应当储存或修改 get() 的返回值。 * @example * const obj = { a: { b: 0 } }; * const { get: getX, set: setX } = safeDeepFork(obj); * setX(d => { d.a.b = 1 }); * console.log(obj.a.b); // 0 * console.log(getX().a.b); // 1 */ export default function safeDeepFork>(origObj: T): SafeForkResult;