web-dev-qa-db-fra.com

Équivalent hasOwnProperty de Typescript

En javascript, si je veux parcourir un dictionnaire et définir les propriétés d'un autre dictionnaire, j'utiliserais quelque chose comme ceci:

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

Si obj est un objet TypeScript (instance d'une classe), existe-t-il un moyen d'effectuer la même opération?

14
Inn0vative1

Si obj est un objet TypeScript (instance d'une classe), existe-t-il un moyen d'effectuer la même opération?

Votre JavaScript est un TypeScript valide ( plus ). Vous pouvez donc utiliser le même code tel quel.

Voici un exemple:

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];
  }
}

Remarque: je recommanderais Object.keys(obj).forEach(k=> même pour JavaScript mais ce n'est pas la question que vous posez ici.

23
basarat

Vous pourriez probablement utiliser simplement ECMAScript 2015 Object.assign(obj, dict);

opérateur de propagation TypeScript me vient à l'esprit, mais je ne pense pas que cela soit applicable car c'est pour créer un nouvel objet, vous voulez écraser les propriétés dans une classe existante .

Ce qu'il faut savoir, c'est que ce n'est qu'une copie superficielle, et cela invoquera des setters dans la classe cible s'ils existent.

0
H Dog