Opcjonalne właściwości interfejsu w TypeScript

W interfejsie można również definiować specjalne opcjonalne (nieobowiązkowe) właściwości. Są one potrzebne, aby nie ograniczać obiektu do określonego zestawu właściwości. Jednocześnie zabronione jest używanie właściwości, które nie należą do interfejsu. Opcjonalne właściwości definiuje się za pomocą operatora ?, umieszczonego po nazwie właściwości.

Stwórzmy interfejs IFigure, który definiuje właściwości dla wszystkich obiektów-figur. Niech color będzie opcjonalną właściwością:

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

Teraz stwórzmy obiekt rectangle i wypiszmy wartość jego koloru w konsoli:

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

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

A teraz sprawdźmy, czy będzie błąd, jeśli nie ustawimy koloru w obiekcie:

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

console.log(rectangle.color);

Błędu nie będzie i w konsoli pojawi się komunikat, że kolor po prostu nie jest zdefiniowany:

typescriptundefined
Задание 1

Stwórz interfejs IDate dla obiektu przechowującego datę: rok, miesiąc i dzień. Niech wszystkie właściwości obiektu będą opcjonalne.