Ich habe den folgenden Code in meinem Typescript. Aber es meldet den folgenden Fehler in der child._moveDeltaX(delta)
Linie:Eigenschaft 'foo' ist geschützt und nur durch eine Instanz der Klasse 'Foo' (in Instanzen von Foo) zugänglich
ERROR: Property '_moveDeltaX' is protected and only accesible
through an instance of class 'Container'
INFO: (method) Drawable._moveDeltaX(delta:number):void
Der Code der Folowing ist:
class Drawable {
private _x:number = 0;
constructor() {}
/**
* Moves the instance a delta X number of pixels
*/
protected _moveDeltaX(delta:number):void {
this._x += delta;
}
}
class Container extends Drawable {
// List of childrens of the Container object
private childs:Array<Drawable> = [];
constructor(){ super();}
protected _moveDeltaX(delta:number):void {
super._moveDeltaX(delta);
this.childs.forEach(child => {
// ERROR: Property '_moveDeltaX' is protected and only accesible
// through an instance of class 'Container'
// INFO: (method) Drawable._moveDeltaX(delta:number):void
child._moveDeltaX(delta);
});
}
}
Was habe ich falsch gemacht? Ich dachte, dass du auf eine geschützte Methode zugreifen kannst. In anderen Lenguajes würde dieser Code problemlos funktionieren.
Es gibt keine Abhilfe, oder? Würden Sie mich bitten, stattdessen einen öffentlichen Setter zu erstellen? – Ciberman
Gut. Sie können einfach auf 'any' umwandeln: '( child) ._ moveXDelta (delta);'. Aber du verlierst die Kompilierzeit (Typoskript), um nach dieser einen Zeile zu suchen (nicht wirklich eine schreckliche Sache, wenn du kein Typoskript-Purist bist). –
Vaccano
Großartig! Das habe ich nicht getan. Ich werde das machen. (Ich habe deine Antwort als richtig akzeptiert, danke!) – Ciberman