Sobes.tech
Senior

Navrhnite správny model dedičnosti pre triedy Button a Input namiesto súčasného, kde Input rozširuje Button.

sobes.tech AI

Odpoveď od AI

Dedičstvo Input od Button nie je logické, pretože Input a Button sú rôzne prvky s rôznou sémantikou a správaním.

Je vhodnejšie definovať spoločnú základnú triedu, napríklad UIControl alebo FormElement, ktorá obsahuje spoločné vlastnosti a metódy pre všetky prvky formulára. Následne od nej dedí Button a Input ako samostatné triedy.

Príklad v TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // spoločná metóda renderovania
  }
}

class Button extends UIControl {
  click() {
    // logika kliknutia
  }
}

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

Tento prístup odráža skutočnú hierarchiu a zabraňuje nesprávnym väzbám medzi triedami.