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

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

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

Нека направим интерфейс IStyle, който ще разширява ISize:

typescriptinterface IStyle extends ISize {
  color: string;
}

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

typescriptclass 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;
  }
}

Нека проверим работата:

typescriptlet fig = new Figure(130, 200, 'green');
console.log(fig);
Задание 1

Създайте интерфейс IProgrammer със свойства salary и language. Нека този интерфейс наследява IUser със свойства name, birthday.

Задание 2

Направете клас Employee, който имплементира IProgrammer.