Proyecto Minigestor de tareas

Proyecto de programación
Avanzado
TypeScript
Curso de TypeScript
180 min
200 XP
Actualizado: 04/05/2025

¡Programa y certifícate!

Asistente de IA
Solución de código
Certificado
Empezar ejercicio

Descripción

Desarrollo de un minigestor de tareas en TypeScript con funcionalidades CRUD, filtrado y persistencia local.

  1. Crea la estructura inicial del proyecto con los siguientes archivos:
  • models/Task.ts: Define la interfaz ITask y la clase Task
  • services/TaskManager.ts: Implementa la clase principal que gestionará las operaciones
  • services/StorageService.ts: Servicio para la persistencia de datos
  • utils/validators.ts: Funciones de validación
  • index.ts: Punto de entrada para probar la aplicación
  1. Define la interfaz ITask en el archivo models/Task.ts con las siguientes propiedades:
  • id: string (identificador único)
  • title: string (obligatorio)
  • description: string (opcional)
  • dueDate: Date (opcional)
  • priority: enum (Low, Medium, High)
  • status: enum (Pending, InProgress, Completed)
  • createdAt: Date (automático)
  • updatedAt: Date (automático)
  1. Implementa la clase Task que implemente la interfaz ITask con un constructor que valide los datos de entrada y genere un ID único para cada tarea.

  2. Crea el servicio de almacenamiento StorageService con métodos para:

  • Guardar datos en localStorage
  • Recuperar datos de localStorage
  • Implementa métodos genéricos usando tipos genéricos de TypeScript
  1. Desarrolla la clase TaskManager con los siguientes métodos:
  • addTask(task: Partial<ITask>): Task: Crea una nueva tarea
  • getTasks(): Task[]: Obtiene todas las tareas
  • getTaskById(id: string): Task | undefined: Busca una tarea por ID
  • updateTask(id: string, data: Partial<ITask>): Task: Actualiza una tarea existente
  • deleteTask(id: string): boolean: Elimina una tarea
  • filterTasks(criteria: {status?: TaskStatus, priority?: TaskPriority}): Task[]: Filtra tareas por criterios
  1. Implementa validaciones en el archivo utils/validators.ts para:
  • Verificar que el título no esté vacío
  • Validar que la fecha límite sea posterior a la fecha actual
  • Comprobar que los valores de prioridad y estado sean válidos
  1. Añade manejo de errores personalizado creando una clase TaskError que extienda de Error y úsala en los métodos del gestor para manejar casos como:
  • Tarea no encontrada
  • Datos inválidos
  • Errores de almacenamiento
  1. Implementa la persistencia de datos en TaskManager utilizando el StorageService para guardar y recuperar las tareas automáticamente.

  2. En el archivo index.ts, crea un ejemplo de uso que demuestre todas las funcionalidades implementadas: crear varias tareas, actualizarlas, eliminar alguna, y mostrar resultados de filtrado.

  3. Mejora la implementación añadiendo métodos para estadísticas como:

  • Número de tareas por estado
  • Tareas próximas a vencer (en los próximos 3 días)
  • Tareas retrasadas (fecha límite pasada)

Solución al ejercicio de programación en TypeScript

Contenido bloqueado

¡Desbloquea la solución completa!

Completa el ejercicio de programación en TypeScript para acceder a la solución paso a paso, explicaciones detalladas y mejores prácticas.

solution.js
JavaScript
1 function solveChallenge ( input ) {
2 // Algoritmo optimizado O(n log n)
3 const data = parseInput ( input );
4 const sorted = data . sort (( a , b ) => a - b );
5
6 // Aplicar técnica de dos punteros
7 let left = 0 , right = sorted . length - 1 ;
8 const result = [];
9
10 while ( left < right ) {
11 const sum = sorted [ left ] + sorted [ right ];
12 if ( sum === target ) {
13 result . push ([ sorted [ left ], sorted [ right ]]);
14 left ++; right --;
15 } else if ( sum < target ) {
16 left ++;
17 } else {
18 right --;
19 }
20 }
21
22 return result ;
23 }
Código completo
Explicaciones
Mejores prácticas
+1.200 developers han resuelto este ejercicio de programación

Practica con ejercicios de programación en TypeScript

Mejora tus habilidades con cientos de ejercicios de práctica, recibe retroalimentación instantánea y obtén tu certificación cuando estés listo.

Asistente de IA

Aprende de tus errores

Progreso

Mide tu avance

Certificación

Valida tus habilidades

Únete a miles de desarrolladores mejorando sus habilidades en TypeScript

⭐⭐⭐⭐⭐
4.9/5 valoración