UNPKG

clonus

Version:

Ultimate object cloning library.

23 lines (22 loc) 1.03 kB
import { CloneContext } from "./cloneContext"; import { Cloner } from "./cloner"; export declare type ClassCloner<T extends object = object> = Cloner & { readonly klass: new (...args: any[]) => T; clone(input: T, context: CloneContext): T; }; export declare abstract class BaseClassCloner<T extends object> implements ClassCloner<T> { readonly klass: new (...args: any[]) => T; constructor(klass: new (...args: any[]) => T); canClone<T>(input: T): input is T; abstract clone<T>(input: T, context: CloneContext): T; abstract clone(input: T, context: CloneContext): T; abstract clone(input: any, context: any): T; } export declare module ClassCloner { function newForClass<T extends object>(klass: new (...args: any[]) => T, factory: (original: T) => T, options?: { ignoreKeys?: boolean; }): ClassCloner<T>; function forClass<T extends object>(klass: new (...args: any[]) => T, factory: (original: T) => T, options?: { ignoreKeys?: boolean; }): new () => ClassCloner<T>; }