在常规JavaScript中,我们可以向window
全局对象添加一个属性,其名称来自string,如下所示:
const str = "myVar";
window[str] = "Value";
console.log(myVar);
但是有没有办法在Angular 2/4和Typescript中做类似的工作?我们可以使用this.myVar
在组件中存储常规变量,但有没有办法使用字符串为变量名创建相同的变量?类似的东西:
const str = "myVar";
this[str] = "Value";
// the result should be the similar as this.myVar = "Value";
答案 0 :(得分:6)
我认为您可以使用以下& Typescript接受这种语法
return_content: yes
而不是
this["myVar"]
答案 1 :(得分:4)
您可以在课程中允许动态属性:
class Test {
[key: string]: any;
constructor() {
const str = "myVar";
this[str] = "Value";
console.log(this.myVar);
}
}
但请确保你确实需要它,因为你正在放弃使用它进行类型检查:
class Test {
[key: string]: any;
constructor() {
this.teet(); // typo and therefore you will get an error in runtime
}
test() {
}
}