Newer
Older
export const isBoolean = (val) => "boolean" === typeof val
export const isString = (val) => {
return Object.prototype.toString.call(val) === "[object String]"
}
export const isArray = (obj) => {
return Object.prototype.toString.call(obj) === "[object Array]"
}
export const isObject = (obj) => {
return Object.prototype.toString.call(obj) === "[object Object]"
}
// Thanks ChatGPT ;)
export const merge = (obj1: object, obj2: object): object => {
if (!obj1) return obj2
if (!obj2) return obj1
for (let key in obj2) {
if (obj2.hasOwnProperty(key)) {
if (obj1.hasOwnProperty(key)) {
if (isObject(obj1[key]) && isObject(obj2[key])) {
obj1[key] = merge(obj1[key], obj2[key])
} else if (isString(obj1[key]) && isString(obj2[key])) {
obj1[key] = obj1[key] + " " + obj2[key]
} else {
obj1[key] = obj2[key]
}
} else {
obj1[key] = obj2[key]
}
}
}
return obj1
}