Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
extends User означает «у Admin есть всё, что есть у User, плюс то, что объявлено ниже». Итоговая форма это { name: string; role: string }, именно её и проверяет тест.
Копия работает ровно до первого изменения: добавили в User поле email, и Admin про него не узнал. Наследование делает связь явной, а заодно сообщает читателю кода замысел: администратор это частный случай пользователя.
Есть и практическое следствие: значение типа Admin можно передать везде, где ждут User.
Интерфейс может расширять сразу несколько:
При переопределении поля родителя тип должен быть совместим с исходным, сузить можно, заменить на несовместимый нельзя:
Похожего результата можно добиться через оператор &, это следующее задание. Разница в деталях: extends проверяет совместимость сразу при объявлении и даёт более понятные сообщения об ошибках, а & работает с любыми типами, не только с интерфейсами.