类型脚本:尽管在构造函数中已初始化,但变量值未定义

时间:2019-02-25 19:08:01

标签: typescript console namespaces undefined

我有num1: number,然后

constructor(){
  ...
  this.num1 = 0;
}

在班级里。

但是当登录到函数console.log(this.num1)console.log(typeof this.num1)中时,两次都得到 undefined

为什么在这里未定义我的变量的值?

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中提到的那样,可能的罪魁祸首是this不是您期望的功能。

如果您有这样的课程:

class Foo {
    public myValue: number;
    constructor() { this.myValue = 0; }
    barOne() { console.log(this.myValue); }
    barTwo = () => { console.log(this.myValue); }
}

barOnebarTwo在类外部实体用作屁股回调时的行为会有所不同。

使用类实例方法作为按钮的回调时就是这种情况,就像您的情况一样。

深入研究this在javascript和打字稿中的工作方式很有用(如果有ecmascript 6,则javascript与打字稿的行为相同),并且有很多关于它的好文章。

但是简单的解决方案是使用“箭头函数”,这与我上面的barTwo方法一样。