Ejercicio de programación con TypeScript: Proyecto Minigestor de tareas
Proyecto
3h 0m
Desarrolla un minigestor de tareas en TypeScript con CRUD, filtrado, validación y persistencia local para mejorar tus habilidades OOP.
- Crea la estructura inicial del proyecto con los siguientes archivos:
models/Task.ts
: Define la interfazITask
y la claseTask
services/TaskManager.ts
: Implementa la clase principal que gestionará las operacionesservices/StorageService.ts
: Servicio para la persistencia de datosutils/validators.ts
: Funciones de validaciónindex.ts
: Punto de entrada para probar la aplicación
- Define la interfaz
ITask
en el archivomodels/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)
Implementa la clase
Task
que implemente la interfazITask
con un constructor que valide los datos de entrada y genere un ID único para cada tarea.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
- Desarrolla la clase
TaskManager
con los siguientes métodos:
addTask(task: Partial<ITask>): Task
: Crea una nueva tareagetTasks(): Task[]
: Obtiene todas las tareasgetTaskById(id: string): Task | undefined
: Busca una tarea por IDupdateTask(id: string, data: Partial<ITask>): Task
: Actualiza una tarea existentedeleteTask(id: string): boolean
: Elimina una tareafilterTasks(criteria: {status?: TaskStatus, priority?: TaskPriority}): Task[]
: Filtra tareas por criterios
- 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
- Añade manejo de errores personalizado creando una clase
TaskError
que extienda deError
y úsala en los métodos del gestor para manejar casos como:
- Tarea no encontrada
- Datos inválidos
- Errores de almacenamiento
Implementa la persistencia de datos en
TaskManager
utilizando elStorageService
para guardar y recuperar las tareas automáticamente.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.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)
Más ejercicios de programación con TypeScript
Evalúa tus conocimientos en TypeScript con más ejercicios de programación de tipo Test, Puzzle, Código y Proyecto con VSCode.
Funciones
Test
Reto composición de funciones
Código
Reto tipos especiales
Código
Reto tipos genéricos
Código
Módulos
Test
Polimorfismo
Código
Funciones TypeScript
Código
Interfaces
Puzzle
Funciones puras
Puzzle
Reto namespaces
Código
Funciones flecha
Puzzle
Polimorfismo
Test
Operadores
Test
Conversor de unidades
Proyecto
Funciones flecha
Test
Control de flujo
Código
Herencia
Puzzle
Clases
Puzzle
Proyecto validación de tipado
Proyecto
Clases y objetos
Código
Tecnologías de este ejercicio de programación
Entornos de desarrollo para este ejercicio

Visual Studio Code

GitHub