UNPKG

@gby/deep-copy

Version:

deep-copy 深拷贝,可对任意数据进行深度拷贝,包括 函数 function、正则 RegExp、Map、Set、Date、Array、URL 等等;支持含循环引用对象的拷贝,并且不会丢失成员的引用关系 和 类型信息,支持扩展,可根据数据类型定制拷贝逻辑,也可指定拷贝深度;所以,通过它可实现对任意类型的数据进行任意想要的拷贝

32 lines (31 loc) 1.3 kB
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;