type MergedObject = ({ [K in keyof (T & U)]: (T & U)[K]; } & { [K in keyof T as T[K] extends any[] ? never : K]: T[K]; } & { [K in keyof U as U[K] extends any[] ? never : K]: U[K]; }); /** * Merge the arrays of two objects, preserving the keys of non-array values, if there are * two overlapping keys that are non-array values the value from `obj1` is overwritten with * the one from `obj2` * * TODO: This should be re-done in a more maintainable way I feel like this function has * weird outcomes and handles too many cases. * * @param obj1 * @param obj2 * @returns */ declare const mergeObjects: , U extends Record>(obj1: T, obj2: U) => MergedObject; export default mergeObjects; //# sourceMappingURL=mergeObjects.d.ts.map