Typescript hasOwnProperty等价

时间:2016-02-29 04:12:28

标签: javascript object typescript typescript1.8

在javascript中如果我想循环一个字典并设置另一个字典的属性,我会使用这样的东西:

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

如果obj是Typescript对象(类的实例),有没有办法执行相同的操作?

2 个答案:

答案 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。