TypeScript使用push将Object添加到数组

时间:2016-07-06 13:44:04

标签: arrays typescript

我只想将类的对象(Pixel)添加到数组中。

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);

有人可以解释为什么上述说法不起作用吗?

2 个答案:

答案 0 :(得分:31)

如果您的示例代表您的真实代码,则问题不在push中,而是您的构造函数无法执行任何操作。

您需要声明并初始化xy成员。

显式:

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) {}
}

答案 1 :(得分:0)

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);