【问题标题】:Typescript: Uncaught typeError, Cannot read property "push" of undefined打字稿:未捕获的类型错误,无法读取未定义的属性“推送”
【发布时间】:2018-11-13 14:04:08
【问题描述】:
private readonly lives: number = 5;   

public loadLifeImages() {
    var ammount: Array<any>;
    for (var i = 0; i < this.lives; i++) {
        ammount.push(i);
    }
    ammount.forEach((v, i) => {
        console.log(this.lives);
        console.log(i);
        var newLifeImage = new Image();
        newLifeImage.src = './assets/images/SpaceShooterRedux/PNG/UI/PlayerLife1_blue.png';
        newLifeImage.onload = () => {
            this.ctx.drawImage(newLifeImage, i * 50, 50, 30, 30);
        }
    })
}

我正在尝试将这些数字推送到 Typescript 中的这个数组,所以我可以使用 for each 循环将图像放在我的画布上,但是它给出了错误“无法读取未定义的属性“推送””我知道它有点双重,但我真的想不出任何其他方法来做到这一点。有人能弄清楚它是什么吗?提前致谢!

【问题讨论】:

    标签: arrays typescript undefined push


    【解决方案1】:

    这可以通过像这样初始化ammount 来解决:

    var ammount: Array<any> = [];
    

    这是因为仅仅输入var ammount: Array&lt;any&gt; 并没有给ammount 赋值,所以它变成了undefined(所有javascript 变量的默认值)。 = [] 将变量初始化为空数组。

    但是,我想指出,从您这里的代码来看,没有充分的理由创建一个新数组并将值推入其中。相反,您可以将 forEach 逻辑放在 for 循环中。

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 1970-01-01
      • 2020-07-25
      • 2020-08-23
      • 2018-10-19
      • 2015-10-20
      • 1970-01-01
      • 2020-01-07
      相关资源
      最近更新 更多