Как игнорировать свойства только с геттером при использовании Object.assign ()? - PullRequest
0 голосов
/ 11 мая 2019

У меня есть источник объекта без определенного типа, но представляющий типизированный объект. Так что я использую Object.assign (цель, источник). Но у моего класса есть свойства, которые являются геттерами (потому что они являются результатами вычислений других свойств).

Пример:

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 голосов
/ 11 мая 2019

Вы не можете использовать Object.assign() для этого, , потому что

Метод Object.assign () используется для копирования значений всех перечислить собственные свойства от одного или нескольких исходных объектов к цели объект.

Другими словами, Object.assign() определяется перечисляемыми свойствами source и не зависит от способа определения свойств в целевом объекте.

Вы должны реализовать собственную функцию вместо Object.assign(), которая пропустит свойства, недоступные для записи для цели, или найдет библиотеку, которая делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...