是否可以在 JavaScript/TypeScript 中将对象的属性“直接”添加到类的 this
中(无需循环遍历对象属性并以这种方式创建它们)?
这样的东西不起作用(据我所知):
const TEST:any = {
case1: {
ing: "ing1",
ping: "ping1"
},
case2: {
ing: "ing2",
ping: "ping2"
}
}
class Test {
constructor() {
if (true) {
Object.assign(this, TEST.case1);
} else {
Object.assign(this, TEST.case2);
}
}
}
所以我可以这样使用它:
let test = new Test();
console.log(test.ing); // outputs "ing1"
最佳答案
if(true)
使其始终进入 if
,而不是进入 else。您的代码按预期工作。请注意,您不能将变量声明为特定类型,看起来您正在尝试混合 ES6 和 TypeScript。
也许您的意思是以下内容(http://www.es6fiddle.net/ikqxpqh4/):
const TEST/* : any (Type information is TypeScript not ES6) */ = {
case1: {
ing: "ing1",
ping: "ping1"
},
case2: {
ing: "ing2",
ping: "ping2"
}
}
class Test {
constructor(test) {
if (test) {
Object.assign(this, TEST.case1);
} else {
Object.assign(this, TEST.case2);
}
}
}
var t1 = new Test(false);
var t2 = new Test(true);
console.log(JSON.stringify(t1), JSON.stringify(t2));
// {"ing":"ing2","ping":"ping2"} {"ing":"ing1","ping":"ping1"}
关于javascript - 在 JavaScript/TypeScript 中动态添加对象属性 "directly"到 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459187/