tamda
Version:
Practical functional programming library for TypeScript
32 lines (31 loc) • 1.41 kB
TypeScript
/**
* Transforms a `source` object based on specified functions for each property in an object `mapper`.
* @note Specify type param `T` to get TypeScript inference on `mapper`, e.g. `transform<MyInterface>()`.
* @param source Object to transform.
* @param mapper Object with key/value pairs of property names and transforming functions.
* @example
* const source = { order: 5, foo: 'bar' };
* transform(source, { order: o => o + 1 });
* // { order: 6, foo: 'bar' }
*/
export declare function transform<T>(source: T, mapper: Mapper<T>): T;
/**
* Returns a function that
* transforms a `source` object based on specified functions for each property in an object `mapper`.
* @note Specify type param `T` to get TypeScript inference on `mapper`, e.g. `transform<MyInterface>()`.
* @param mapper Object with key/value pairs of property names and transforming functions.
* @example
* const incrementOrder = transform({ order: o => o + 1 });
* incrementOrder({ order: 5, foo: 'bar' })
* // { order: 6, foo: 'bar' }
*/
export declare function transform<T>(mapper: Mapper<T>): typeof deferred;
export declare type Mapper<T> = {
[K in keyof T]?: (p: T[K]) => T[K];
};
/**
* Transforms a `source` object based on specified functions for each property in an object `mapper`.
* @param source Object to transform.
*/
declare function deferred<T>(source: T): T;
export {};