Sobes.tech
Senior

Navrhněte správný model dědičnosti pro třídy Button a Input namísto současného, kde Input rozšiřuje Button.

sobes.tech AI

Odpověď od AI

Dědičnost Input od Button není logická, protože Input a Button jsou různé prvky s různou sémantikou a chováním.

Je vhodnější definovat společnou základní třídu, například UIControl nebo FormElement, která obsahuje společné vlastnosti a metody pro všechny prvky formuláře. Poté od ní dědí Button a Input jako samostatné třídy.

Příklad v TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // společná metoda renderování
  }
}

class Button extends UIControl {
  click() {
    // logika kliknutí
  }
}

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

Tento přístup odráží skutečnou hierarchii a zabraňuje nesprávným vazbám mezi třídami.