Typescript: Uncaught typeError, Cannot read property "push" of undefined

Viewed 1121
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);
        }
    })
}

I'm trying to push these numbers to this array in Typescript, so I can use a for each loop to put the images on my canvas, however it gives the error 'cannot read property "push" of undefined' I know it's a bit double, but I really can't figure out any other way to do it. Can someone figure out what it is? thanks in advance!

1 Answers

This can be fixed by initializing ammount like this:

var ammount: Array<any> = [];

This is because just typing var ammount: Array<any> doesn't give a value to ammount, so it becomes undefined (the default value for all javascript variables). = [] initializes the variable to be an empty array.

However, I want to point out that judging from the code you have here, there is no good reason to create a new array and just push the values into it. Instead, you could just put the forEach logic inside the for-loop.

Related