Интерфейсы для ООП классов в TypeScript

Интерфейсы в TypeScript широко используются также как шаблоны и для классов. Для того, чтобы применить к классу нужный интерфейс после имени класса пишется ключевое слово implements и затем имя интерфейса.

При этом интерфейсы описывают только публичные свойства и методы класса. Приватная часть задается в самом классе и в интерфейсе не описывается.

Попробуем на практике. Пусть у нас есть следующий интерфейс, задающий свойство и метод:

typescriptinterface IUser {
  name: string;
  greet(): string;
}

Сделаем класс, реализующий этот интерфейс. В этом классе у нас должны быть реализованы свойство name и метод greet:

typescriptclass User implements IUser {
  name: string;
  
  constructor(name: string) {
    this.name = name;
  }
  
  greet() {
    return `hello, ${this.name}!`;
  }
}
Задание 1

Создайте интерфейс IMath со свойствами num1 и num2 и методом getDiv, который будет делить первое число на второе.

Задание 2

Сделайте класс Math, который реализует интерфейс IMath.