在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"
答案 0 :(得分:2)
if(true)
让它始终进入if
,永远不会进入其他地方。您的代码按预期工作。请注意,您不能将变量声明为特定类型,看起来您正在尝试混合使用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"}