Я не уверен, как задать этот вопрос. В этом примере легче отказаться.Доступ к защищенному члену из объекта с помощью такого же суперпротеиста указывает ошибку
tsc --version > 1.8.10
TLDR: I would like to know if this is a design error on my part
У меня есть супер-прототип под названием A
с protected
членом a
. У меня есть два конструктора под названием B
и C
, каждый простираться от A
(A
их прототип прототипа?)
Экземпляр B
создается в экземпляре C
и я attemp доступ к общим защищенный член a
нового экземпляра B
. В Visual Studio кодекса линия прошлифованных следующее сообщение об ошибке:
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;
}
}
Я хотел бы знать, если это ошибка проектирования с моей стороны , Может быть, C
экземпляры не должны иметь доступ к B
обычно унаследованным защищенным членам, хотя результирующая js transpilation должна технически работать отлично, я точно знаю, что экземпляры B
будут иметь член a
.
Я пытаюсь сделать что-то подобное, и я считаю, что вы получите ошибку, пытающуюся присвоить значение 'this.a' в методе' class C'. В моем случае я получал 'undefined' при попытке установить значения в защищенный объект в моем супер классе ... (интересно, он скомпилирован без ошибок - IDEA 2016.2) – Neoheurist