Função para Buscar um Item por ID
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 65 de 73.
Desafio
FácilVocê recebeu o seguinte do desafio anterior:
- A interface genérica
InventoryItem<T>com as propriedadesid,quantityedetails - A função genérica
addItemque adiciona itens a arrays de inventário - Vários itens de inventário e arrays de inventário atualizados
Crie uma função genérica chamada findItemById que pesquise um item em um array de inventário pelo seu ID.
A função deve:
- Usar um parâmetro de tipo genérico
T - Aceitar um parâmetro
inventorydo tipoInventoryItem<T>[] - Aceitar um parâmetro
iddo tiponumber - Retornar o item encontrado do tipo
InventoryItem<T>ouundefinedse não for encontrado - Ter uma anotação explícita do tipo de retorno
InventoryItem<T> | undefined
Crie inventários de teste:
- Crie
mixedBookInventorycomo um array contendo:- Um item com
id: 10,quantity: 3,details: { title: "JavaScript Basics", author: "Alice Brown" } - Um item com
id: 11,quantity: 7,details: { title: "React Fundamentals", author: "Bob Wilson" } - Um item com
id: 12,quantity: 2,details: { title: "Node.js Guide", author: "Carol Davis" }
- Um item com
- Crie
mixedElectronicInventorycomo um array contendo:- Um item com
id: 20,quantity: 5,details: { brand: "Samsung", model: "Galaxy S23" } - Um item com
id: 21,quantity: 1,details: { brand: "Apple", model: "iPhone 15" }
- Um item com
Teste sua função e imprima as seguintes saídas:
- Encontre o item com ID 11 em
mixedBookInventorye imprima odetails.titledo resultado (ouundefinedse não for encontrado) - Encontre o item com ID 20 em
mixedElectronicInventorye imprima odetails.branddo resultado (ouundefinedse não for encontrado) - Encontre o item com ID 99 em
mixedBookInventorye imprima o resultado (deve serundefined) - Encontre o item com ID 12 em
mixedBookInventorye imprima oquantitydo resultado (ouundefinedse não for encontrado) - Encontre o item com ID 21 em
mixedElectronicInventorye imprima odetails.modeldo resultado (ouundefinedse não for encontrado) - Encontre o item com ID 10 em
mixedBookInventorye imprima oiddo resultado (ouundefinedse não for encontrado) - Encontre o item com ID 50 em
mixedElectronicInventorye imprima o resultado (deve serundefined)
Experimente você mesmo
// Generic interface from previous challenge
interface InventoryItem<T> {
id: number;
quantity: number;
details: T;
}
// Items from previous challenge
const bookItem: InventoryItem<{ title: string; author: string }> = {
id: 1,
quantity: 5,
details: { title: "TypeScript Handbook", author: "John Doe" }
};
const electronicItem: InventoryItem<{ brand: string; model: string }> = {
id: 2,
quantity: 3,
details: { brand: "TechCorp", model: "X100" }
};
const clothingItem: InventoryItem<{ size: string; color: string }> = {
id: 3,
quantity: 10,
details: { size: "M", color: "Blue" }
};
// Generic function to add item to inventory
function addItem<T>(inventory: InventoryItem<T>[], newItem: InventoryItem<T>): InventoryItem<T>[] {
return [...inventory, newItem];
}
// Create book inventory and new book
const bookInventory = [bookItem];
const newBook: InventoryItem<{ title: string; author: string }> = {
id: 4,
quantity: 2,
details: { title: "Advanced TypeScript", author: "Jane Smith" }
};
const updatedBookInventory = addItem(bookInventory, newBook);
// Create electronic inventory and new electronic
const electronicInventory = [electronicItem];
const newElectronic: InventoryItem<{ brand: string; model: string }> = {
id: 5,
quantity: 1,
details: { brand: "GadgetCorp", model: "Z500" }
};
const updatedElectronicInventory = addItem(electronicInventory, newElectronic);
// Print outputs
console.log(updatedBookInventory.length);
console.log(updatedBookInventory[1].details.title);
console.log(updatedBookInventory[1].details.author);
console.log(updatedElectronicInventory.length);
console.log(updatedElectronicInventory[1].details.brand);
console.log(updatedElectronicInventory[1].details.model);
console.log(updatedElectronicInventory[0].id);
console.log(updatedElectronicInventory[1].quantity);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