Sobes.tech
Senior

Zaproponuj poprawny model dziedziczenia dla klas Button i Input zamiast obecnego, w którym Input dziedziczy po Button.

sobes.tech AI

Odpowiedź od AI

Dziedziczenie Input od Button nie jest logiczne, ponieważ Input i Button to różne elementy o różnej semantyce i zachowaniu.

Lepszym rozwiązaniem jest zdefiniowanie wspólnej klasy bazowej, np. UIControl lub FormElement, która zawiera wspólne właściwości i metody dla wszystkich elementów formularza. Następnie Button i Input dziedziczą z niej jako oddzielne klasy.

Przykład w TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // wspólna metoda renderowania
  }
}

class Button extends UIControl {
  click() {
    // logika kliknięcia
  }
}

class Input extends UIControl {
  value: string = '';
  setValue(val: string) {
    this.value = val;
  }
}

Taki podejście odzwierciedla rzeczywistą hierarchię i pozwala uniknąć nieprawidłowych powiązań między klasami.