Typescript эквивалент hasOwnProperty

В javascript, если я хочу прокрутить словарь и установить свойства другого словаря, я бы использовал что-то вроде этого:

for (let key in dict) {
  if (obj.hasOwnProperty(key)) {
    obj[key] = dict[key];
  }
}

Если obj является объектом Typescript (экземпляр класса), есть ли способ выполнить ту же операцию?

Ответ 1

Если obj является объектом Typescript (экземпляр класса), существует ли способ выполнить ту же операцию?

Ваш JavaScript действителен Typescript (подробнее). Таким образом, вы можете использовать тот же код, что и он.

Вот пример:

class Foo{
    foo = 123
}

const dict = new Foo();
const obj = {} as Foo;

for (let key in dict) {
  if (obj.hasOwnProperty(key)) {
    obj[key] = dict[key];
  }
}

Примечание. Я бы рекомендовал Object.keys(obj).forEach(k=> даже для JavaScript, но это не вопрос, который вы задаете здесь.

Ответ 2

Возможно, вы могли бы просто использовать ECMAScript 2015 Object.assign(obj, dict);

Оператор распространения Typescript приходит на ум, но я не думаю, что это применимо, потому что для создания нового объекта вы хотите перезаписать свойства в существующем классе.

Следует помнить, что это только поверхностная копия, и она вызовет сеттеры в целевом классе, если они существуют.