我有一个未定义类型的对象源,但表示一个类型化的对象。这样我就在使用Object.assign(target,source)。但是我的课的属性是吸气剂(因为它们是其他属性的计算结果)。
一个例子:
source: {
a: 1,
b: 2,
sum: 3
}
class SomeClass {
a: number;
b: number;
get sum(): number {
return a + b;
}
}
someFunction() {
let obj = new SomeClass();
Object.assign(obj, source);
}
在上述情况下,我得到一个错误: 无法设置仅具有吸气剂的[object Object]的属性总和。。
Object.assign()是否有任何方法可以忽略源对象中的那些属性?
答案 0 :(得分:0)
您不能为此使用Object.assign()
,because
Object.assign()方法用于复制所有值 从一个或多个源对象到目标的可枚举的自身属性 对象。
换句话说,Object.assign()
由source
的可枚举属性驱动,不受目标中定义属性的方式的影响。
您必须实现自己的函数,而不是Object.assign()
,这将跳过对目标不可写的属性,或者会找到可以执行此操作的库。