Вложенный объект описывается вложенным типом, массив навыков — string[], необязательный телефон — phone?: string. Такой тип проверяет структуру при компиляции, но не валидирует внешний JSON.
Как описать TypeScript-тип вложенного профиля
Вложенный объект описывается вложенным типом, массив навыков — string[], необязательный телефон — phone?: string. Такой тип проверяет структуру при компиляции, но не валидирует внешний JSON.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Опишите TypeScript-тип объекта с числовым id, строковым name, массивом строк skills и объектом contacts с обязательным email и необязательным phone. Приведите корректный объект этого типа.
Ответ
Вложенный объект описывается вложенным типом, массив навыков — string[], необязательный телефон — phone?: string. Такой тип проверяет структуру при компиляции, но не валидирует внешний JSON.
type Profile = {
id: number;
name: string;
skills: string[];
contacts: {
email: string;
phone?: string;
};
};
const profile: Profile = {
id: 1,
name: 'Анна',
skills: ['SQL', 'Python'],
contacts: { email: 'anna@example.com' }
};
Отсутствие phone допустимо, а отсутствие email или строковый id — ошибка для такого литерала. Знак вопроса не делает поле обязательным со значением null. Данные из сети нужно отдельно проверить во время исполнения: утверждение as Profile само по себе не доказывает их корректность.