Menu
Coddy logo textTech

Комбинирование псевдонимов типов

Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 35 из 73.

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

Этот подход способствует повторному использованию кода и делает определения типов более удобными в сопровождении. Когда вам нужно обновить базовый тип, все составные типы, которые его используют, автоматически наследуют изменения:

type Email = string;
type Phone = number;

type Contact = {
  name: string;
  email: Email;
  phone: Phone;
};

Вы также можете комбинировать псевдонимы типов внутри объединений типов для создания гибких структур данных. Это особенно полезно, когда свойство объекта может принимать различные форматы:

type ContactMethod = Email | Phone;

type User = {
  id: number;
  preferredContact: ContactMethod;
};

Этот композиционный подход делает ваш код более выразительным и понятным. Вместо того чтобы видеть общие типы, такие как string или number, другие разработчики сразу понимают предназначение через осмысленные имена типов, такие как Email и Phone.

challenge icon

Задание

Легко

Создайте псевдоним типа с именем Username для типа string.

Создайте псевдоним типа с именем UserAge для типа number.

Создайте псевдоним типа с именем ContactMethod, который объединяет Username и UserAge с помощью объединения типов (union type).

Создайте псевдоним типа с именем UserProfile для объекта со следующими свойствами:

  • id типа number
  • displayName типа Username
  • preferredContact типа ContactMethod

Создайте псевдоним типа с именем AdminProfile, который объединяет UserProfile с дополнительным типом объекта, содержащим свойство permissions типа string, используя пересечение типов (intersection types).

Теперь создайте следующие переменные:

  • Создайте переменную с именем regularUser типа UserProfile с id 1, displayName "john_doe" и preferredContact "john_doe"
  • Создайте переменную с именем systemAdmin типа AdminProfile с id 2, displayName "admin", preferredContact 25 и permissions "full_access"

Создайте функцию с именем getContactInfo, которая принимает параметр contact типа ContactMethod и возвращает string. Используйте сужение типов (type guard), чтобы проверить тип и вернуть:

  • Если это строка: "Contact: [contact]"
  • Если это число: "Age: [contact]"

Выведите следующие результаты в отдельных строках:

  • Вызовите getContactInfo с regularUser.preferredContact и выведите результат
  • Вызовите getContactInfo с systemAdmin.preferredContact и выведите результат
  • Выведите systemAdmin.permissions

Попробуйте сами

// TODO: Напишите свой код здесь

// Создайте псевдонимы типов для Username, UserAge, ContactMethod, UserProfile и AdminProfile

// Создайте переменные regularUser и systemAdmin

// Создайте функцию getContactInfo

// Выведите необходимые результаты
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в TypeScript

Потренируйтесь самостоятельно: Онлайн-компилятор JavaScript