UNPKG

@synstack/enhance

Version:

Type-safe object enhancement with proxy-based method extension

16 lines (14 loc) 815 B
declare const ENHANCER_NAME: unique symbol; type Enhanced<TName extends string, TBaseObject extends object, TExtension extends object> = { $: TBaseObject; [ENHANCER_NAME]: TName; } & TExtension & TBaseObject; declare const enhance: <TName extends string, TBaseObject extends object | (object & { [ENHANCER_NAME]: TName; $: object; }), TExtension extends object>(name: TName, obj: TBaseObject, extendObj: TExtension) => Enhanced<TName, TBaseObject, TExtension>; declare const enhanceFactory: <TName extends string, TExtension extends object>(name: TName, extendObj: TExtension) => <TBaseObject extends object | (object & { [ENHANCER_NAME]: TName; $: object; })>(obj: TBaseObject) => Enhanced<TName, TBaseObject, TExtension>; export { ENHANCER_NAME, type Enhanced, enhance, enhanceFactory };