1
私はTypescriptに次のコードを書いています。しかし、それは報告しchild._moveDeltaX(delta)
ラインに次のエラー:プロパティ 'foo'は保護されており、クラス 'Foo'(Fooのインスタンス)のインスタンスを通じてのみアクセス可能です
ERROR: Property '_moveDeltaX' is protected and only accesible
through an instance of class 'Container'
INFO: (method) Drawable._moveDeltaX(delta:number):void
コードがfolowingさ:
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);
});
}
}
は私が間違って何を持っていますか?保護されたメソッドにアクセスできると思っていました。他の言語では、このコードは問題なく動作します。
回避策はありませんか?あなたは公共のセッターを作る代わりに私に甘い? – Ciberman
。 'any': '(子)._ moveXDelta(delta);'にキャストできます。しかし、あなたはコンパイル時間(typescript)をチェックしてその1行をチェックします(もしあなたがタイスクリプトの純粋主義者でないなら、ひどいことではありません)。 –
Vaccano
素晴らしい!私はそれをしなかった。私はします。 (私はあなたの答えを正解と認めました、ありがとう!) – Ciberman