Skip to content

Задание: типизированная запись на консультацию

Одна модель данных, несколько функций и ясные ограничения типов.

also in web development basics

On this page

Опишите данные заявки на консультацию и напишите функции, которые используют эту модель. Здесь проверяем работу TypeScript с уже полученными данными. Проверку пользовательского ввода через Zod вы увидите рядом с формами в Next-03.

Шаг 1. Опишите данные

Создайте тип Appointment со свойствами:

  • name – строка;
  • email – строка;
  • duration – число минут;
  • online – логическое значение.

Создайте объект appointment этого типа. Намеренно попробуйте записать строку в duration, а затем удалите обязательное свойство. Посмотрите на сообщения редактора и верните правильные данные.

Шаг 2. Получите длительность

Напишите getAppointmentDuration, которая принимает Appointment и возвращает число минут. Укажите тип аргумента и результата.

Шаг 3. Сформируйте подпись

Напишите getAppointmentLabel, которая использует имя, результат getAppointmentDuration и проверку online. Она должна вернуть строку вроде Анна, онлайн, 30 минут или Анна, очно, 30 минут.

main.ts
getAppointmentLabel({
  name: "Анна",
  email: "anna@example.com",
  duration: 30,
  online: true,
});
// "Анна, онлайн, 30 минут"

Что приложить

  1. Тип и объект Appointment.
  2. Обе функции с явно указанными типами аргументов и результатов.
  3. Пример ошибки типов, которую редактор показывает до запуска, и исправленный вариант.

Критерий: обязательные поля и допустимые типы описаны один раз, а редактор показывает ошибку при неверном объекте.