Вот упрощенная версия того, что я хотел в проекте:
abstract class Parent {
protected abstract method(): any;
}
class Child extends Parent {
protected method(): any {}
protected other() {
let a: Parent = new Child()
a.method()
}
}
class Other extends Parent {
protected method(): any {}
}
Сбой при попытке вызвать a.method()
. Ошибка выглядит следующим образом:
Property 'method' is protected and only accessible through an instance of class 'Child'.
Playground Link
Насколько я понимаю, проблема заключается в том, что a.method()
не вызывается изнутри фактический экземпляр a
. Но, тем не менее, он вызывается из экземпляра Child
, поэтому ошибка кажется странной. Разве экземпляры одного и того же базового класса не «дружат» друг с другом?
И, наконец, как я могу решить свою проблему, не теряя преимуществ, которые дает protected
? Благодаря.