Ответы пользователя по тегу TypeScript
  • Как правильно переопределять метод в дочернем классе?

    Apathetic
    @Apathetic
    Frontend
    Первый вариант - сделать класс-родитель абстрактным и объявить в нем абстрактный метод methodB. Компилятор будет требовать, чтобы в классе-потомке в обязательном порядке был объявлен methodB
    abstract class Parent {
      methodA(){
        this.methodB();
      }
    
      abstract methodB(): void
    };
    
    class Child1 extends Parent { // Ошибка: Non-abstract class 'Child1' does not implement inherited abstract member 'methodB' from class 'Parent'.
      constructor(){
        super();
      }
    }


    Если нет возможности объявить класс-родитель как абстрактный, можно объявить внутри него метод methodB и кидать в нем exception, мол, этот метод должен быть переобъявлен в потомке. Так ошибка будет ловиться только в рантайме, но это лучше, чем ничего.

    P.S.: Но вообще полагаться в родителе на методы потомков - не очень хорошая практика =)
    Ответ написан