打字稿:未捕获的typeError,无法读取未定义的属性“ push”

时间:2018-11-13 14:04:08

标签: arrays typescript undefined push

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中的此数组,因此我可以对每个循环使用a将图像放在画布上,但是会出现错误“无法读取未定义的属性” push””,我知道它有点翻倍,但我真的想不通其他方法。有人可以弄清楚它是什么吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

可以通过初始化ammount来解决此问题:

var ammount: Array<any> = [];

这是因为仅输入var ammount: Array<any>不会给ammount赋值,所以它变成undefined(所有javascript变量的默认值)。 = []将变量初始化为空数组。

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