Выбор ответа Middle SOLID и принципы обновлено

Нарушение принципа Лисков

Вопрос

Команда сделала свой компонент <TextInput> как «замену» нативному <input>. Какое его поведение нарушает принцип подстановки Лисков?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Его onChange передаёт строку, а код ждёт событие, как у input. LSP: подставленная реализация не должна ломать ожидания кода, написанного под базовый контракт.

Варианты ответа

  1. Он принимает дополнительный проп label, которого нет у input
  2. У него свои стили по умолчанию, отличные от нативного поля
  3. Его onChange передаёт строку, а код ждёт событие, как у inputправильный ответ
  4. Он внутри использует useId для связи label и input

Разбор

LSP: подставленная реализация не должна ломать ожидания кода, написанного под базовый контракт. Если onChange вдруг передаёт строку, e.target.value в существующем коде упадёт. Дополнительные пропсы и свои стили расширяют, а не ломают контракт. useId это деталь реализации, снаружи её не видно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.