Это паршивое сообщение об ошибке, но очень важно не игнорировать его!
Мой код, который привел меня к этой ошибке, был следующим:
Tracker.ts
private _name: string;
public get name(): string { return this._name; }
public set name(name: string) { this._name = name; }
SubTracker.ts (расширяет трекер)
super.name = "Simon"; // seems innocuous enough right?
А потом я получил ошибку:
ошибка TS2340: только открытые и защищенные методы базового класса
доступно через ключевое слово super.
Оказывается, когда вы делаете super.name
, вы на самом деле перезаписываете саму реализацию суперкласса . Поэтому мне удалось преобразовать name
в глобальное статическое свойство. Тогда где-нибудь Я получу доступ к name
Я получу последнее значение, которое я установил.
Так в чем же дело? Измените super
на this
:
this.name = "Simon";
Так что не игнорируйте эту ошибку компилятора!