Menu
CoddyTech

Projeto: Item de Inventário Genérico

Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 63 de 73.

Bem-vindo ao seu primeiro projeto TypeScript! Você está prestes a construir um sistema de gerenciamento de inventário genérico que demonstra o poder real dos genéricos no mundo real. Este projeto mostrará como os genéricos podem criar código flexível e reutilizável que funciona com diferentes tipos de dados, mantendo a segurança de tipos completa.

A base de qualquer sistema de inventário é definir como um item de inventário se parece. Em uma abordagem tradicional, você poderia criar interfaces separadas para livros, eletrônicos, roupas e outros tipos de produtos. Mas com generics, você pode criar uma estrutura flexível que se adapta a qualquer tipo de detalhe de produto.

Sua primeira tarefa é criar uma interface genérica chamada InventoryItem<T>. Essa interface representará a estrutura comum compartilhada por todos os itens do inventário: eles precisam de um id para identificação, de uma quantity para acompanhar os níveis de estoque e de uma propriedade details que possa conter qualquer tipo de informação específica do produto.

A mágica acontece com o parâmetro de tipo genérico T. Isso permite que a propriedade details seja completamente flexível — ela pode ser informações de livros, especificações eletrônicas ou quaisquer outros dados de produtos — enquanto o id e a quantity permanecem consistentemente tipados como números em todos os itens do inventário.

challenge icon

Desafio

Fácil

Crie uma interface genérica chamada InventoryItem que represente a estrutura de qualquer item de inventário no seu sistema de gerenciamento.

A interface deve:

  • Usar um parâmetro de tipo genérico T
  • Ter uma propriedade id do tipo number
  • Ter uma propriedade quantity do tipo number
  • Ter uma propriedade details do tipo T

Crie os seguintes objetos usando sua interface genérica:

  • bookItem do tipo InventoryItem<{ title: string; author: string }> com:
    • id: 1
    • quantity: 5
    • details: { title: "TypeScript Guide", author: "John Doe" }
  • electronicItem do tipo InventoryItem<{ brand: string; model: string }> com:
    • id: 2
    • quantity: 3
    • details: { brand: "TechCorp", model: "X200" }
  • clothingItem do tipo InventoryItem<{ size: string; color: string }> com:
    • id: 3
    • quantity: 10
    • details: { size: "M", color: "Blue" }

Imprima as seguintes saídas:

  • Imprima bookItem.id
  • Imprima bookItem.quantity
  • Imprima bookItem.details.title
  • Imprima bookItem.details.author
  • Imprima electronicItem.details.brand
  • Imprima electronicItem.details.model
  • Imprima clothingItem.details.size
  • Imprima clothingItem.details.color

Experimente você mesmo

// TODO: Escreva seu código aqui
// Crie a interface InventoryItem e os objetos necessários

// Imprima as saídas necessárias
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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao TypeScript

Pratique por conta própria: Playground de TypeScript