在javascript中如果我想循环一个字典并设置另一个字典的属性,我会使用这样的东西:
for (let key in dict) {
if (obj.hasOwnProperty(key)) {
obj[key] = dict[key];
}
}
如果obj
是Typescript对象(类的实例),有没有办法执行相同的操作?
答案 0 :(得分:21)
如果obj是Typescript对象(类的实例),有没有办法执行相同的操作?
您的JavaScript是有效的TypeScript(more)。所以你可以使用相同的代码。
以下是一个例子:
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];
}
}
注意:即使是JavaScript,我也会推荐Object.keys(obj).forEach(k=>
,但这不是您在这里提出的问题。
答案 1 :(得分:0)
您可能只需要使用ECMAScript 2015的Object.assign(obj, dict);
Typescript spread operator 我想到了,但我认为这不适用,因为那是为了创建新对象,您想覆盖现有 class 中的属性。
需要注意的是它只是一个浅表副本,如果存在,它将调用目标类中的setter。