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

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

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

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

`interface IUser { name: string; greet(): string; }`

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

`class User implements IUser { name: string; constructor(name: string) { this.name = name; } greet() { return `hello, ${this.name}!`; } }`

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

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

← →
↑