Crear un tipo de inventario específico
Parte de la sección Introducción a TypeScript del Journey de JavaScript de Coddy. Lección 66 de 73.
Desafío
FácilSe te proporciona lo siguiente del desafío anterior:
- La interfaz genérica
InventoryItem<T>con las propiedadesid,quantityydetails - La función genérica
addItemque añade elementos a los arreglos de inventario - La función genérica
findItemByIdque busca elementos por ID
Crea dos tipos de objetos específicos y sus correspondientes alias de tipo para elementos de inventario:
- Crea un alias de tipo
Bookcon las propiedades:titlede tipostringauthorde tipostring
- Crea un alias de tipo
Electroniccon las propiedades:brandde tipostringmodelde tipostring
Crea alias de tipo para elementos de inventario específicos:
- Crea
BookItemcomoInventoryItem<Book> - Crea
ElectronicItemcomoInventoryItem<Electronic>
Crea elementos de inventario concretos utilizando tus nuevos alias de tipo:
- Crea
specificBookde tipoBookItemcon:id: 100quantity: 8details: { title: "Clean Code", author: "Robert Martin" }
- Crea
specificElectronicde tipoElectronicItemcon:id: 200quantity: 4details: { brand: "Sony", model: "WH-1000XM4" }
Crea arreglos de inventario tipados:
- Crea
bookStorede tipoBookItem[]que contengaspecificBook - Crea
electronicStorede tipoElectronicItem[]que contengaspecificElectronic
Crea elementos adicionales y prueba tu sistema de tipos:
- Crea
anotherBookde tipoBookItemcon:id: 101quantity: 3details: { title: "Design Patterns", author: "Gang of Four" }
- Usa
addItempara añadiranotherBookabookStorey almacénalo enexpandedBookStore
Imprime las siguientes salidas:
- Imprime
specificBook.details.title - Imprime
specificBook.details.author - Imprime
specificElectronic.details.brand - Imprime
specificElectronic.details.model - Imprime la longitud de
expandedBookStore - Usa
findItemByIdpara buscar el elemento con ID 101 enexpandedBookStoree imprime eldetails.titledel resultado - Usa
findItemByIdpara buscar el elemento con ID 200 enelectronicStoree imprime laquantitydel resultado - Imprime
expandedBookStore[1].details.author
Pruébalo tú mismo
// Generic interface from previous challenge
interface InventoryItem<T> {
id: number;
quantity: number;
details: T;
}
// Generic function from previous challenge
function addItem<T>(inventory: InventoryItem<T>[], item: InventoryItem<T>): InventoryItem<T>[] {
return [...inventory, item];
}
// Create the generic findItemById function
function findItemById<T>(inventory: InventoryItem<T>[], id: number): InventoryItem<T> | undefined {
return inventory.find(item => item.id === id);
}
// Create test inventories
const mixedBookInventory: InventoryItem<{ title: string; author: string }>[] = [
{ id: 10, quantity: 3, details: { title: "JavaScript Basics", author: "Alice Brown" } },
{ id: 11, quantity: 7, details: { title: "React Fundamentals", author: "Bob Wilson" } },
{ id: 12, quantity: 2, details: { title: "Node.js Guide", author: "Carol Davis" } }
];
const mixedElectronicInventory: InventoryItem<{ brand: string; model: string }>[] = [
{ id: 20, quantity: 5, details: { brand: "Samsung", model: "Galaxy S23" } },
{ id: 21, quantity: 1, details: { brand: "Apple", model: "iPhone 15" } }
];
// Test the function and print outputs
const result1 = findItemById(mixedBookInventory, 11);
console.log(result1 ? result1.details.title : undefined);
const result2 = findItemById(mixedElectronicInventory, 20);
console.log(result2 ? result2.details.brand : undefined);
const result3 = findItemById(mixedBookInventory, 99);
console.log(result3);
const result4 = findItemById(mixedBookInventory, 12);
console.log(result4 ? result4.quantity : undefined);
const result5 = findItemById(mixedElectronicInventory, 21);
console.log(result5 ? result5.details.model : undefined);
const result6 = findItemById(mixedBookInventory, 10);
console.log(result6 ? result6.id : undefined);
const result7 = findItemById(mixedElectronicInventory, 50);
console.log(result7);Todas las lecciones de Introducción a TypeScript
1Primeros pasos con TS
¿Qué es TypeScript?¿Por qué usar TypeScript?Tu primer código en TypeScriptProceso de compilación y erroresResumen: Introducción a TS4Trabajando con funciones
Tipado de parámetros y valores de retornoTipado de funciones de flechaEl tipo de retorno 'void'Parámetros opcionales con '?'Valores de parámetros por defectoTipado de parámetros restDefinición de tipos de funcionesRepaso: Construcción de funciones tipadas7Proyecto: Una lista de tareas simple
Proyecto: Definir la estructura TaskFunción para agregar una tarea10Proyecto: Gestión de inventario
Proyecto: Ítem de inventario genéricoFunción: Agregar ítems al inventario2Tipos principales
Tipos básicos: str, num, booleanEl tipo 'any': Vía de escapeEl tipo 'unknown'Trabajando con 'null' y 'undef'Inferencia de tipos en acciónAnotaciones de tipo explícitasResumen: Práctica de tipos principales5Tipos: Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de unión ('|')Trabajando con tipos de uniónTipos literalesTipos de intersección ('&')Combinando alias de tiposRepaso: Combinaciones de tipos avanzadas3Estructura de datos: Arrays y Tuplas
Arrays tipadosModificador 'readonly' para Arrays¿Qué es una Tupla?Declaración y acceso a TuplasDesestructuración de TuplasTuplas ReadonlyArrays tipados multidimensionalesOperador Spread con ArraysResumen: Arrays y TuplasPractica por tu cuenta: Playground de TypeScript