@monstermann/fn
Version:
A utility library for TypeScript.
28 lines (26 loc) • 871 B
TypeScript
import { Merge } from "type-fest";
//#region src/object/mapAssign.d.ts
/**
* `mapAssign(target, map)`
*
* Merges `target` object with the result of calling `map` function on `target`, creating a new object.
*
* Looser version of `mapMerge` - `mapAssign` allows you to redefine keys and add new properties.
*
* ```ts
* mapAssign({ a: 1, b: 2 }, (obj) => ({ c: obj.a + obj.b })); // { a: 1, b: 2, c: 3 }
* ```
*
* ```ts
* pipe(
* { a: 1, b: 2 },
* mapAssign((obj) => ({ c: obj.a + obj.b })),
* ); // { a: 1, b: 2, c: 3 }
* ```
*/
declare const mapAssign: {
<T extends object, U extends object>(map: (target: NoInfer<T>) => U): (target: T) => T extends unknown ? Merge<T, U> : never;
<T extends object, U extends object>(target: T, map: (target: NoInfer<T>) => U): T extends unknown ? Merge<T, U> : never;
};
//#endregion
export { mapAssign };