/** * Extends an object with another one combining them whenever it's possible. * If both objects (or it's children) have an array on the same property those will be concatenated. * If both objects (or it's children) have an object on the same property those will be merged. * Otherwise it will be overwriten. * * @param {Object} target Object to be modified. * @param {Object} source Object where properties will be copied from. * @returns {Object} The object passed as the first argument. */ export default function deepExtend(target: T, source: U): T & U;