Расширение интерфейсов в ООП в TypeScript

Интерфейсы в TypeScript могут наследовать друг от друга. Такое взаимодействие называется расширением интерфейсов. Давайте посмотрим на примере. Пусть у нас есть интерфейс ISize:

interface ISize { height: number; width: number; }

Сделаем интерфейс IStyle, который будет расширять ISize:

interface IStyle extends ISize { color: string; }

Теперь давайте создадим класс Figure, реализующий интерфейс IStyle. Наш класс должен будет реализовать как свойство самого интерфейса, так и его родителя. Сделаем это:

class Figure implements IStyle { height: number; width: number; color: string; constructor(height: number, width: number, color: string) { this.height = height; this.width = width; this.color = color; } }

Проверим работу:

let fig = new Figure(130, 200, 'green'); console.log(fig);

Создайте интерфейс IProgrammer со свойствами salary и language. Пусть данный интерфейс наследует IUser со свойствами name, birthday.

Сделайте класс Employee, который реализует IProgrammer.