2
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!

0

1 Answer 1

2

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.