Sobes.tech
Senior

Proponha um modelo de herança correto para as classes Button e Input em vez do atual, onde Input estende Button.

sobes.tech IA

Resposta da IA

A herança de Input de Button não é lógica, pois Input e Button são elementos diferentes com semânticas e comportamentos distintos.

É mais correto definir uma classe base comum, por exemplo, UIControl ou FormElement, que contenha propriedades e métodos comuns a todos os elementos do formulário. Depois, Button e Input herdam dela como classes separadas.

Exemplo em TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // método comum de renderização
  }
}

class Button extends UIControl {
  click() {
    // lógica do clique
  }
}

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

Essa abordagem reflete a hierarquia real e evita conexões incorretas entre classes.