簡體   English   中英

打字稿:未捕獲的類型錯誤,無法讀取未定義的屬性“推送”

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

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 每個循環將圖像放在我的畫布上,但是它給出了錯誤“無法讀取未定義的屬性“推送””我知道這有點雙倍,但我真的想不出任何其他方法來做到這一點。 有人能弄清楚它是什么嗎? 提前致謝!

這可以通過像這樣初始化ammount來解決:

var ammount: Array<any> = [];

這是因為僅輸入var ammount: Array<any>不會為ammount提供值,因此它變為undefined (所有 javascript 變量的默認值)。 = []將變量初始化為空數組。

但是,我想指出,從您這里的代碼來看,沒有充分的理由創建一個新數組並將值推入其中。 相反,您可以將 forEach 邏輯放在 for 循環中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM