在下面的代码中,如您所见,我在 Test
类中声明了一个变量 constObj
。并同时在构造函数中将constObj
对象赋值给this
。
为什么我们需要再次声明变量,即使我们已经在构造函数中将它分配给 this
?
在 webstorm
IDE 中,它抛出错误 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();
如果我们不申报,请告知会发生什么情况。
最佳答案
Is declaring the variable is mandatory...
它不是一个变量,它是一个属性。
TypeScript 的答案:是的,它是强制性的,以便 TypeScript 知道 Test
具有该属性以进行静态类型检查。 (请注意,您所做的方式只是声明该属性的可能方式之一。但您确实需要声明它。)
JavaScript 的答案:不,这不是强制性的¹,因为 JavaScript 不进行静态类型检查。
¹(根据当前规范这是不可能的,但它是 soon will be 并且通常使用 Babel 等工具进行转译)
关于javascript - 为什么要在类中声明变量,甚至在构造函数中将该变量赋值给 this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54783144/