20 lines
682 B
TypeScript
20 lines
682 B
TypeScript
// TODO @xingyu:要不要抽到 package 里?
|
||
/**
|
||
* 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2}
|
||
* @param target 目标对象
|
||
* @param source 源对象
|
||
*/
|
||
export const copyValueToTarget = (target: any, source: any) => {
|
||
const newObj = Object.assign({}, target, source);
|
||
// 删除多余属性
|
||
Object.keys(newObj).forEach((key) => {
|
||
// 如果不是target中的属性则删除
|
||
if (!Object.keys(target).includes(key)) {
|
||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||
delete newObj[key];
|
||
}
|
||
});
|
||
// 更新目标对象值
|
||
Object.assign(target, newObj);
|
||
};
|