Как описать TypeScript-тип вложенного профиля

Вложенный объект описывается вложенным типом, массив навыков — string[], необязательный телефон — phone?: string. Такой тип проверяет структуру при компиляции, но не валидирует внешний JSON.

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

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

Вложенный объект описывается вложенным типом, массив навыков — 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 само по себе не доказывает их корректность.

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

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

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

Подробнее