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?
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.
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.