Typescript: Uncaught typeError, Невозможно прочитать свойство "push" из неопределенного - PullRequest
0 голосов
/ 13 ноября 2018
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, чтобы я мог использовать цикл для каждого цикла, чтобы поместить изображения на холст, однако это выдает ошибку «не могу прочитать свойство« push »из undefined«Я знаю, что это немного вдвойне, но я действительно не могу придумать другого способа сделать это.Может кто-нибудь понять, что это такое?заранее спасибо!

1 Ответ

0 голосов
/ 13 ноября 2018

Это можно исправить инициализацией ammount следующим образом:

var ammount: Array<any> = [];

Это потому, что простой набор var ammount: Array<any> не дает значения ammount, поэтому он становится undefined (значение по умолчанию для всех переменных javascript). = [] инициализирует переменную как пустой массив.

Однако я хочу отметить, что, судя по приведенному здесь коду, нет веской причины создавать новый массив и просто помещать в него значения. Вместо этого вы можете просто поместить логику forEach в цикл for.

...