8
在javascript中,如果我想通過詞典環和另一個字典的設置屬性,我會使用這樣的:打字稿hasOwnProperty相當於
for (let key in dict) {
if (obj.hasOwnProperty(key)) {
obj[key] = dict[key];
}
}
如果obj
是打字稿對象(類的實例) ,有沒有辦法執行相同的操作?
在javascript中,如果我想通過詞典環和另一個字典的設置屬性,我會使用這樣的:打字稿hasOwnProperty相當於
for (let key in dict) {
if (obj.hasOwnProperty(key)) {
obj[key] = dict[key];
}
}
如果obj
是打字稿對象(類的實例) ,有沒有辦法執行相同的操作?
如果obj是Typescript對象(類的實例),有沒有辦法執行相同的操作?
JavaScript是有效的打字稿(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=>
但不是你問這裏的問題。
我對此有個疑問,在你的情況下,你初始化foo屬性,它確保它存在於生成的js代碼中;雖然如果該屬性沒有定義,那麼它根本不是生成的代碼的一部分。你知道這是爲什麼嗎?當我嘗試在某個實例上使用hasOwnProperty時,這讓我感到很驚訝,並且得到了錯誤的迴應,儘管我期望它存在但未定義。 – dSebastien
讓我們考慮未定義的屬性,即在typecript {class A {prop1:string,prop2:number}}中定義的所有屬性不會被Object.keys或this.hasOwnProperty(k)中的任何一個枚舉自動化JavaScript沒有這些屬性的知識。 – loretoparisi
爲什麼你會推薦'Object.keys(obj).forEach(k =>'over'for()'? – Coo