使用Object.assign()时如何仅使用吸气剂忽略属性?

时间:2019-05-11 00:12:03

标签: typescript ecmascript-5

我有一个未定义类型的对象源,但表示一个类型化的对象。这样我就在使用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()是否有任何方法可以忽略源对象中的那些属性?

1 个答案:

答案 0 :(得分:0)

您不能为此使用Object.assign()because

  

Object.assign()方法用于复制所有值   从一个或多个源对象到目标的可枚举的自身属性   对象。

换句话说,Object.assign()source的可枚举属性驱动,不受目标中定义属性的方式的影响。

您必须实现自己的函数,而不是Object.assign(),这将跳过对目标不可写的属性,或者会找到可以执行此操作的库。