JavaScriptで辞書をループして別の辞書のプロパティを設定する場合、次のようなものを使用します。
for (let key in dict) {
if (obj.hasOwnProperty(key)) {
obj[key] = dict[key];
}
}
obj
がTypeScriptオブジェクト(クラスのインスタンス)である場合、同じ操作を実行する方法はありますか?
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=>
をお勧めしますが、ここで尋ねている質問ではありません。
おそらくECMAScript 2015の Object.assign(obj, dict);
を使用できます
TypeScriptスプレッド演算子 が思い浮かびますが、新しいオブジェクトを作成するためであり、既存のclassのプロパティを上書きするため、適用できるとは思いません。
知っておくべきことは、それは浅いコピーに過ぎず、ターゲットクラスのセッターが存在する場合はそれを呼び出すことです。