web-dev-qa-db-fra.com

TypeScript ajouter un objet à un tableau avec push

Je voudrais juste ajouter un objet d'une classe (Pixel) à un tableau.

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

La classe a l'attribut suivant:

pixels: Pixel[] = [];

Le code suivant semble logique pour moi, mais ne transmet pas les objets réels à mes pixels de tableau.

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

Seulement cela fonctionne:

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

Quelqu'un pourrait-il m'expliquer pourquoi la déclaration ci-dessus ne fonctionne pas?

12
Johannes

Si votre exemple représente votre vrai code, le problème ne réside pas dans la Push, c'est que votre constructeur ne fait rien.

Vous devez déclarer et initialiser les membres x et y.

Explicitement:

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

Ou implicitement:

export class Pixel {
    constructor(public x: number, public y: number) {}
}
29
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