Выбор ответа Middle SOLID и принципы обновлено
Нарушение принципа Лисков
Вопрос
Команда сделала свой компонент <TextInput> как «замену» нативному <input>. Какое его поведение нарушает принцип подстановки Лисков?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Его onChange передаёт строку, а код ждёт событие, как у input. LSP: подставленная реализация не должна ломать ожидания кода, написанного под базовый контракт.
Варианты ответа
- Он принимает дополнительный проп
label, которого нет уinput - У него свои стили по умолчанию, отличные от нативного поля
- Его
onChangeпередаёт строку, а код ждёт событие, как уinputправильный ответ - Он внутри использует
useIdдля связиlabelиinput
Разбор
LSP: подставленная реализация не должна ломать ожидания кода, написанного под базовый контракт. Если onChange вдруг передаёт строку, e.target.value в существующем коде упадёт. Дополнительные пропсы и свои стили расширяют, а не ломают контракт. useId это деталь реализации, снаружи её не видно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.