Проширење интерфејса у ООП у 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.