Предложите правильную модель наследования для классов Button и Input вместо текущей, где Input extends Button.

Наследование Input от Button не является логичным, так как Input и Button — это разные элементы с разной семантикой и поведением.

Короткий ответ

Что ответить на собеседовании

Наследование Input от Button не является логичным, так как Input и Button — это разные элементы с разной семантикой и поведением.

Подробный разбор

Ответ с пояснениями

Наследование Input от Button не является логичным, так как Input и Button — это разные элементы с разной семантикой и поведением.

Правильнее выделить общий базовый класс, например, UIControl или FormElement, который содержит общие свойства и методы для всех элементов формы. Затем от него наследуются Button и Input как отдельные классы.

Пример на TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // общий метод рендеринга
  }
}

class Button extends UIControl {
  click() {
    // логика клика
  }
}

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

Такой подход отражает реальную иерархию и позволяет избежать неправильных связей между классами.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку