为什么要在类中声明变量,甚至在构造函数中将该变量赋值给它

Jav*_*SKT 3 javascript typescript

在下面的代码中,您可以看到我constObjTest类中声明了一个变量.并同时在构造函数中分配constObj对象this.

为什么我们需要再次声明变量,即使我们已经this在构造函数中将其赋值?

webstormIDE,它抛出的错误doesn't have the property constObj,如果我这样做this.constObj,如果变量没有声明.但代码工作正常没有问题.

声明变量是强制性的,即使我们将其赋值给 this

const constObj = {
  a: function() {
    console.log("sivakumar");
  }
};

class Test {
  constObj: any; // Is this line mandatory? I mean declaring it???

  constructor() {
    Object.assign(this, {
      constObj
    });
  }

  callMethod() {
    this.constObj.a();
  }
}

new Test().callMethod();
Run Code Online (Sandbox Code Playgroud)

如果我们不申报,请告知,将会发生什么.

T.J*_*der 8

声明变量是强制性的......

它不是一个变量,它是一个属性.

TypeScript的答案:是的,它是必需的,因此TypeScript知道Test具有该属性以进行静态类型检查.(请注意,这样你做它只是宣告属性的可能方式之一,但你确实需要申报.)

JavaScript的答案:不,它不是必需的¹,因为JavaScript不进行静态类型检查.


¹(根据当前的规范,这是不可能的,但它很快就会出现并且通常用像Babel这样的工具进行转换)