在Angular 2+和Typescript中使用字符串作为变量名

时间:2017-09-29 06:04:11

标签: angular typescript

在常规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";

enter image description here

enter image description here

2 个答案:

答案 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() {

  }
}