深度合并策略参数类型问题
来源:9-3 合并配置的设计与实现 - 配置合并策略(下)

许愿瓶啊
2020-08-20
function deepMergeStrat(val1: any, val2: any): any {
if (isPlanObject(val2)) {
return deepMerge(val1, val2)
} else if (typeof val2 !== 'undefined') {
return val2
} else if (isPlanObject(val1)) {
return deepMerge(val1)
} else if (typeof val1 !== 'undefined') {
return val1
}
}
这里的深度合并策略如果不只是考虑 headers 的合并的话需要考虑参数的所有类型,而 deepMerge 接受的都是对象属性,这里第一个条件判断并不能保证 val1 val2 都是对象吧,如果 val1 是字符串的话这里的合并就会出问题,改成下面的代码是不是更合理点?
function deepMergeStrat(val1: any, val2: any): any {
if (isPlanObject(val2)) {
if (isPlanObject(val1)) {
return deepMerge(val1, val2)
} else {
return deepMerge(val2)
}
} else if (typeof val2 !== 'undefined') {
return val2
} else {
if (isPlanObject(val1)) {
return deepMerge(val1)
} else {
return val1
}
}
}
写回答
1回答
-
你那么改也可以,不过考虑到这个 deepMergeStrat 是针对限定的场景,所以这么搞也行。
012020-08-21
相似问题
参数是数组时,类型变量的捕获机制是怎样的
回答 1
配置函数合并问题?
回答 1