TypeScript да интерфейснинг опционал хоссалари

Интерфейсда махсус опционал (ихтиёрий) хоссаларни белгилаш мумкин. Улар объектни белгиланган хоссалар тўплами билан чекламаслик учун керак. Шу билан бирга, интерфейсга кирмайдиган хоссаларни ишлатиш тақиқланади. Опционал хоссалар номонинг ортига ? операторини қўйиш орқали белгиланади.

Келинг, IFigure интерфейсини яратайлик, у барча объект-шакллар учун хоссаларни белгиласин. color опционал хосса бўлсин:

typescriptinterface IFigure {
  height: number;
  width: number;
  color?: string;
}

Энди rectangle объектини яратиб, унинг ранг қийматини консолга чиқарайлик:

typescriptlet rectangle: IFigure = {
  height: 200,
  width: 300,
  color: 'red'
}

console.log(rectangle.color); // 'red'

Энди объектда рангни белгиламасак, хатолик бўладими ёки йўқлигини текширайлик:

typescriptlet rectangle: IFigure = {
  height: 200,
  width: 300
}

console.log(rectangle.color);

Хатолик бўлмайди ва консолда ранг жуда аникланмаганлиги хакида хабар чиқади:

typescriptundefined
Задание 1

IDate интерфейсини яратинг, у санани сақловчи объект учун: йил, ой ва кун. Барча хоссалар ихтиёрий бўлсин.