web-dev-qa-db-ja.com

TypeScriptはプッシュでオブジェクトを配列に追加します

クラスのオブジェクト(ピクセル)を配列に追加したいだけです。

export class Pixel {
  constructor(x: number, y: number) {}
}

クラスには次の属性があります。

pixels: Pixel[] = [];

次のコードは論理的に見えますが、実際のオブジェクトを配列ピクセルにプッシュしません。

this.pixels.Push(new Pixel(x, y));

これだけが機能します:

var p = {x:x, y:y};
this.pixels.Push(p);

上の文が機能しない理由を誰か説明してもらえますか?

17
Johannes

例が実際のコードを表している場合、問題はPushにありません。コンストラクターが何もしないということです。

xおよびyメンバーを宣言して初期化する必要があります。

明示的に:

export class Pixel {
    public x: number;
    public y: number;   
    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}

または暗黙的に:

export class Pixel {
    constructor(public x: number, public y: number) {}
}
32
Motti
class PushObjects {
    testMethod(): Array<number> { 
        //declaration and initialisation of array onject
        var objs: number[] = [1,2,3,4,5,7];
        //Push the elements into the array object
        objs.Push(100);
        //pop the elements from the array
        objs.pop();
        return objs;
    }   
}

let pushObj = new PushObjects();
//create the button element from the dom object 
let btn = document.createElement('button');
//set the text value of the button
btn.textContent = "Click here";
//button click event
btn.onclick = function () { 

    alert(pushObj.testMethod());

} 

document.body.appendChild(btn);
0
satish hiremath