@zstings/utils
Version:
javascript、typescript 工具函数库 文档地址 [utils 文档](https://zstings.github.io/utils/)
18 lines (17 loc) • 874 B
TypeScript
type MergeTuple<T extends any[]> = T extends [infer F, ...infer R] ? Omit<F, keyof MergeTuple<R>> & MergeTuple<R> : {};
type Merge<T, U> = Omit<T, keyof U> & U;
/**
* 最小合并对象
* @param target 目标对象,被合并的对象
* @param sources 源对象,可以多个
* @return 目标对象
* @throws target参数必须是object target参数不是对象时触发
* @category 对象Object
* @example
* 最小合并对象,只会合并源对象原有的属性,其他忽略
* ```ts
* assignMin({a: 1, c: 1}, {a: 2, b: 3}, {c: 3}) // => {a: 2, c: 3}
* ```
*/
export default function assignMin<T extends Record<string, any>, U extends Record<string, any>[]>(target: T, ...sources: U): keyof T extends never ? {} : Omit<Merge<T, MergeTuple<U>>, Exclude<keyof MergeTuple<U>, keyof T> | Exclude<Exclude<keyof T, keyof MergeTuple<U>>, keyof T>>;
export {};