clonus
Version:
Ultimate object cloning library.
23 lines (22 loc) • 1.03 kB
TypeScript
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>;
}