Sobes.tech
Senior

Propuneți un model de moștenire corect pentru clasele Button și Input în locul celui actual, unde Input extinde Button.

sobes.tech AI

Răspuns de la AI

Moștenirea Input de la Button nu este logică, deoarece Input și Button sunt elemente diferite cu semnificații și comportamente diferite.

Este mai corect să definești o clasă de bază comună, de exemplu, UIControl sau FormElement, care conține proprietăți și metode comune pentru toate elementele formularului. Apoi, Button și Input moștenesc de la aceasta ca clase separate.

Exemplu în TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // metodă comună de randare
  }
}

class Button extends UIControl {
  click() {
    // logică de clic
  }
}

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

Această abordare reflectă ierarhia reală și evită conexiunile incorecte între clase.