TypeScript да ООП да интерфейсларни кенгайтириш

TypeScript да интерфейслар бир-биридан мерос олишлари мумкин. Бу ўзаро таъсир интерфейсларни кенгайтириш деб аталади. Келинг, мисолда кўрамиз. Фарз қилайлик, бизда ISize интерфейси мавжуд:

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

ISize ни кенгайтирадиган IStyle интерфейсини ясаймиз:

typescriptinterface IStyle extends ISize {
  color: string;
}

Энди IStyle интерфейсини амалга оширадиган Figure синфини ясаймиз. Бизнинг синф ўзининг интерфейсининг хам, унинг ота-онасининг хам xусусиятларини амалга ошириши керак. Бунни амалга оширамиз:

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

salary ва language xусусиятларига эга IProgrammer интерфейсини яратинг. Бу интерфейс name, birthday xусусиятларига эга IUser дан мерос олсин.

Задание 2

IProgrammer ни амалга оширадиган Employee синфини ясанг.