@gby/deep-copy
Version:
deep-copy 深拷贝,可对任意数据进行深度拷贝,包括 函数 function、正则 RegExp、Map、Set、Date、Array、URL 等等;支持含循环引用对象的拷贝,并且不会丢失成员的引用关系 和 类型信息,支持扩展,可根据数据类型定制拷贝逻辑,也可指定拷贝深度;所以,通过它可实现对任意类型的数据进行任意想要的拷贝
32 lines (31 loc) • 1.3 kB
TypeScript
import type { OptionalBoolean } from "type-tls";
export interface CopyMemberOptions {
allOwnProps?: OptionalBoolean;
depth?: number | null | undefined;
copyFun?: OptionalBoolean;
}
/**
* 拷贝完成的回调函数
*/
export declare type CompleteCB<V> = (copy: V) => void;
/**
* 成员的深拷贝方法
* @param member : any 改选;被拷贝的成员
* @param key ?:any 可选;成员 member 对应的 key
* @param host ?:any | null | undefined 可选;成员 member 所属的宿主对象;默认值:传给 copier 的 value ;当值为 null | undefined 会使用传给 copier 的 value 作为 host
* @param options?:CopyMemberOptions
*/
export declare type CopyMember<T = any, K = any, H = any> = (member: T, completeCB?: CompleteCB<T> | null | undefined, key?: K, host?: H | null | undefined, options?: CopyMemberOptions) => T | undefined;
export interface CopierOptions<Host> {
allOwnProps: OptionalBoolean;
key: any;
host: Host;
type: string;
depth: number;
copyFun: boolean;
}
export declare type Copier<T = any, Host = any> = (this: T, value: T, copyMember: CopyMember, options: CopierOptions<Host>) => T;
export interface Copyable {
getCopy: Copier<this>;
}
export declare function isCopyable(target: any): target is Copyable;