web-dev-qa-db-ja.com

TypeScript hasOwnPropertyと同等

JavaScriptで辞書をループして別の辞書のプロパティを設定する場合、次のようなものを使用します。

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

objがTypeScriptオブジェクト(クラスのインスタンス)である場合、同じ操作を実行する方法はありますか?

14
Inn0vative1

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=>をお勧めしますが、ここで尋ねている質問ではありません。

23
basarat

おそらくECMAScript 2015の Object.assign(obj, dict); を使用できます

TypeScriptスプレッド演算子 が思い浮かびますが、新しいオブジェクトを作成するためであり、既存のclassのプロパティを上書きするため、適用できるとは思いません。

知っておくべきことは、それは浅いコピーに過ぎず、ターゲットクラスのセッターが存在する場合はそれを呼び出すことです。

0
H Dog