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.
Desafio
FácilCrie 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
iddo tiponumber - Ter uma propriedade
quantitydo tiponumber - Ter uma propriedade
detailsdo tipoT
Crie os seguintes objetos usando sua interface genérica:
bookItemdo tipoInventoryItem<{ title: string; author: string }>com:id: 1quantity: 5details: { title: "TypeScript Guide", author: "John Doe" }
electronicItemdo tipoInventoryItem<{ brand: string; model: string }>com:id: 2quantity: 3details: { brand: "TechCorp", model: "X200" }
clothingItemdo tipoInventoryItem<{ size: string; color: string }>com:id: 3quantity: 10details: { 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);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
1Primeiros Passos com TS
O que é TypeScript?Por que usar TypeScript?Seu Primeiro Código TypeScriptProcesso de Compilação e ErrosRecapitulação: Introdução ao TS4Trabalhando com Funções
Tipagem de Parâmetros e RetornosTipagem de Arrow FunctionsO Tipo de Retorno 'void'Parâmetros Opcionais com '?'Valores Padrão de ParâmetrosTipagem de Rest ParametersDefinindo Tipos de FunçõesRecapitulação: Criando Funções Tipadas7Projeto: Uma Lista de Tarefas Simples
Projeto: Definindo a Struct de TarefaFunção para Adicionar uma Tarefa10Projeto: Gerenciamento de Inventário
Projeto: Item de Inventário GenéricoFunção: Adicionar Itens ao Inventário2Tipos Principais
Tipos Básicos: str, num, booleanO Tipo 'any': Válvula de EscapeO Tipo 'unknown'Trabalhando com 'null' e 'undef'Inferência de Tipo na PráticaAnotações de Tipo ExplícitasRecapitulação: Prática de Tipos Principais5Tipos: Aliases, Uniões e Interseções
Aliases de Tipos para PrimitivosTipos de União ('|')Trabalhando com Tipos de UniãoTipos LiteraisTipos de Interseção ('&')Combinando Aliases de TiposRecapitulação: Combinações Avançadas de Tipos3Estrutura de Dados: Arrays e Tuplas
Arrays TipadosModificador 'readonly' para ArraysO que é uma Tupla?Declarando e Acessando TuplasDesestruturando TuplasTuplas ReadonlyArrays Tipados MultidimensionaisSpread Operator com ArraysRecapitulação: Arrays e TuplasPratique por conta própria: Playground de TypeScript