UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

35 lines (34 loc) 952 B
import { UnknownArray } from "type-fest"; //#region src/object/evolve.d.ts type Evolver<T> = T extends object ? T extends UnknownArray ? never : { readonly [K in keyof T]?: K extends symbol ? never : Evolver<T[K]> | ((data: Required<T>[K]) => T[K]) } : never; /** * `evolve(target, props)` * * Creates a new object with multiple properties transformed by their corresponding functions in the `props` object. * * ```ts * evolve( * { a: 1, b: 2, c: 3 }, * { * a: (x) => x * 2, * c: (x) => x + 1, * }, * ); // { a: 2, b: 2, c: 4 } * ``` * * ```ts * pipe( * { a: 1, b: 2, c: 3 }, * evolve({ * a: (x) => x * 2, * c: (x) => x + 1, * }), * ); // { a: 2, b: 2, c: 4 } * ``` */ declare const evolve: { <T extends object, U extends Evolver<T>>(evolver: U): (target: T) => T; <T extends object, U extends Evolver<T>>(target: T, evolver: U): T; }; //#endregion export { evolve };