Menu
CoddyTech

Проект: Универсальный предмет инвентаря

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

Добро пожаловать в ваш первый проект на TypeScript! Вам предстоит создать универсальную систему управления инвентарем, которая продемонстрирует реальную мощь обобщений (generics). Этот проект покажет вам, как обобщения позволяют создавать гибкий, переиспользуемый код, который работает с различными типами данных, сохраняя при этом полную типобезопасность.

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

Ваша первая задача — создать универсальный интерфейс под названием InventoryItem<T>. Этот интерфейс будет представлять общую структуру, которую разделяют все предметы инвентаря: им нужен id для идентификации, quantity для отслеживания уровня запасов и свойство details, которое может содержать любой тип информации о продукте.

Магия заключается в использовании параметра универсального типа T. Это делает свойство details абсолютно гибким — оно может содержать информацию о книге, технические характеристики электроники или любые другие данные о продукте — в то время как id и quantity во всех позициях инвентаря неизменно типизируются как числа.

challenge icon

Задание

Легко

Создайте универсальный интерфейс (generic interface) с именем InventoryItem, который представляет структуру любого элемента инвентаря в вашей системе управления.

Интерфейс должен:

  • Использовать параметр универсального типа T
  • Иметь свойство id типа number
  • Иметь свойство quantity типа number
  • Иметь свойство details типа T

Создайте следующие объекты, используя ваш универсальный интерфейс:

  • bookItem типа InventoryItem<{ title: string; author: string }> со следующими значениями:
    • id: 1
    • quantity: 5
    • details: { title: "TypeScript Guide", author: "John Doe" }
  • electronicItem типа InventoryItem<{ brand: string; model: string }> со следующими значениями:
    • id: 2
    • quantity: 3
    • details: { brand: "TechCorp", model: "X200" }
  • clothingItem типа InventoryItem<{ size: string; color: string }> со следующими значениями:
    • id: 3
    • quantity: 10
    • details: { size: "M", color: "Blue" }

Выведите следующие значения:

  • Выведите bookItem.id
  • Выведите bookItem.quantity
  • Выведите bookItem.details.title
  • Выведите bookItem.details.author
  • Выведите electronicItem.details.brand
  • Выведите electronicItem.details.model
  • Выведите clothingItem.details.size
  • Выведите clothingItem.details.color

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

// TODO: Напишите свой код здесь
// Создайте интерфейс InventoryItem и необходимые объекты

// Выведите требуемые результаты
console.log(bookItem.id);
console.log(bookItem.quantity);
console.log(bookItem.details.title);
console.log(bookItem.details.author);
console.log(electronicItem.details.brand);
console.log(electronicItem.details.model);
console.log(clothingItem.details.size);
console.log(clothingItem.details.color);
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Песочница TypeScript