この質問の回答方法はわかりません。この例は下見しやすいです。スーパープロトタイプが同じオブジェクトから保護されたメンバーにアクセスすると、エラーが表示される
tsc --version > 1.8.10
TLDR: I would like to know if this is a design error on my part
私はprotected
メンバーa
でA
と呼ばれるスーパープロトタイプを持っています。 私は(?A
そのプロトタイプのプロトタイプです)A
からそれぞれが伸びる、2つのコンストラクタがB
とC
と呼ばれてい
B
のインスタンスがC
のインスタンスで作成され、私はアクセスするためにattemp 共通保護されたメンバーa
B
の新しいインスタンスの私はこれが私の部分の設計誤差があるかどうかを知りたい
property
a
is protected and only accessible through an instance of classC
.
あなたはplayground
abstract class A {
protected a = 'a';
}
class B extends A {}
class C extends A {
c: B;
constructor() {
super();
this.c = new B();
}
get() {
return this.c.a;
}
}
に次のコードを試すことができます:Visual Studioのコードではラインは、次のエラーをスルー。たぶんC
インスタンスはB
に一般に継承された保護されたメンバーに継承されるべきではありません。js transpilationは技術的に完全に実行する必要がありますが、B
のインスタンスにはa
というメンバがあります。
私は同様のことをやろうとしています。クラスCのメソッド内で 'this.a'に値を代入しようとするとエラーが発生すると思います。私の場合、スーパークラスのプロテクトされたオブジェクトに値を設定しようとすると 'undefined 'となってしまいました...(興味深いことに、エラーなくコンパイルされました - IDEA 2016.2) – Neoheurist