TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.
Есть типы User и Admin и функция getFullName, принимающая Admin. Можно ли передать в неё объект user1 типа User и объект user2 с дополнительными полями? Объясните поведение TypeScript.
TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.
Лишние поля у уже существующей переменной обычно не мешают, а свежий объектный литерал может пройти excess property check. Если User не содержит обязательное поле Admin, передать его нельзя. Без определений типов и объектов конкретные два вызова оценить невозможно.