defaults-deep-ts
Version:
_.defaultsDeep with proper typescript typing
24 lines (23 loc) • 833 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var isPlainObject = function (obj) { return Object.prototype.toString.call(obj) === '[object Object]'; };
var isNil = function (v) { return v === null || v === undefined; };
var defaultsDeep = function (object, defaults) {
var result = object;
for (var p in defaults) {
if (!Object.prototype.hasOwnProperty.call(defaults, p)) {
continue;
}
if (isNil(result[p]) && !isNil(defaults[p])) {
result[p] = defaults[p];
}
}
for (var p in result) {
var defaultValue = defaults[p];
if (isPlainObject(result[p]) && isPlainObject(defaultValue)) {
result[p] = defaultsDeep(result[p], defaultValue);
}
}
return result;
};
exports.default = defaultsDeep;