Это не может быть четко задокументировано, но абстрактные свойства и методы абстрактных классов должны быть объявлены в конкретных подклассах;они не могут быть просто использованы .Это означает, что вы можете исправить свой первый пример, добавив конкретные объявления свойств:
class TestClass1 extends ParentClass {
significantEntity: SignificantEntity1; // declaration
constructor() {
super();
this.significantEntity = new SignificantEntity1();
}
}
class TestClass2 extends ParentClass {
significantEntity: SignificantEntity2; // declaration
constructor() {
super();
this.significantEntity = new SignificantEntity2();
}
}
Конечно, если все, что вы делаете в конструкторе, это инициализация свойства, вы можете удалить конструктор и использовать явный инициализатор свойства , который служит как объявлением, так и инициализацией:
class TestClass1 extends ParentClass {
significantEntity = new SignificantEntity1();
}
class TestClass2 extends ParentClass {
significantEntity= new SignificantEntity2();
}
Хорошо, надеюсь, это поможет.Удачи!