Есть типы User и Admin и функция getFullName, принимающая Admin. Можно ли передать в неё объект user1 типа User и объект user2 с дополнительными полями? Объясните поведение TypeScript.

TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.

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

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

TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.

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

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

TypeScript проверяет структурную совместимость: объект должен иметь все обязательные поля Admin с подходящими типами, независимо от названия типа.

Лишние поля у уже существующей переменной обычно не мешают, а свежий объектный литерал может пройти excess property check. Если User не содержит обязательное поле Admin, передать его нельзя. Без определений типов и объектов конкретные два вызова оценить невозможно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее