Как вызывать метод в классе, которого нет, но он есть в том, который наследует его?

В TypeScript вы можете вызывать методы в классе, которого самого нет, но он есть в классе, который наследует его. Эта концепция называется наследованием методов.

Для вызова метода из базового класса в наследующем классе, вы можете использовать ключевое слово super. Ключевое слово super обозначает ссылку на родительский класс и может быть использовано для доступа к его методам и свойствам.

Рассмотрим пример:

class Animal {
  constructor(public name: string) {}

  sound(): void {
    console.log("The animal makes a sound");
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name);
  }

  sound(): void {
    super.sound();
    console.log("The dog barks");    
  }
}

const dog = new Dog("Buddy");
dog.sound();

В этом примере мы создаем базовый класс Animal, который имеет метод sound. Затем мы создаем класс Dog, который наследует Animal. Мы переопределили метод sound в классе Dog и добавили дополнительную функциональность.

Однако, чтобы вызвать метод sound из базового класса, мы используем super.sound(). Это позволяет нам вызвать метод из родительского класса, а затем добавить свои дополнительные логику.

В результате выполнения этого кода, вы увидите следующий вывод:

The animal makes a sound
The dog barks

Вызов super.sound() вызывает метод sound из базового класса, и затем мы добавляем дополнительный вывод "The dog barks".

Таким образом, вы можете вызывать методы из класса, которого нет, но он есть в классе, который наследует его, используя ключевое слово super. Это позволяет вам переопределить функциональность базового класса и добавить свои собственные дополнения или изменения.