在TypeScript中未定义成员

时间:2014-06-22 19:50:15

标签: typescript undefined member

我得到了这个代码,VS编译得很好,但是在Chrome中运行会给出'Uncaught TypeError:无法设置属性'height'的undefined'

canvas: HTMLCanvasElement = null;

constructor(...) {
  this.canvas = <HTMLCanvasElement>document.getElementById("canvas");

  if (this.canvas == null || this.canvas == undefined) {
    // Freak out. The canvas element does not exist.
    console.log("The canvas element 'canvas' does not exist!);
  }
  else {
    console.log("Got canvas! "+this.canvas);
  }
...
}

Resize(): void {
    var screenSize = {
        width: window.innerWidth,
        height: window.innerHeight
    };

    if (screenSize.height * this.aspectRatio > screenSize.width) {
        this.canvas.width = screenSize.width;
        this.canvas.height = screenSize.width * (1 / this.aspectRatio);
    }
    else {
        this.canvas.height = screenSize.height;
        this.canvas.width = screenSize.height * this.aspectRatio;
    }
}

错误发生在从底部开始的thrid行中,但我认为它会在访问画布的任何位置出现。构造函数中的if语句并不吓坏。 我来自Java,因此想做打字稿而不是javascript,以便有更多的东西,但到目前为止我已经受到了很好的保护c:

1 个答案:

答案 0 :(得分:1)

正如您的评论所说,您这样称呼它: window.addEventListener(“resize”,this.Resize,false);

如果将其更改为此,则可以正常工作:

window.addEventListener("resize", () => { this.Resize() }, false);

您还可以将调整大小功能更改为此(这将保存“此”上下文):

private Resize = () => {
}