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 приходит на ум, но я не думаю, что это применимо, потому что для создания нового объекта вы хотите перезаписать свойства в существующем классе.
Следует помнить, что это только поверхностная копия, и она вызовет сеттеры в целевом классе, если они существуют.