Ejercicio de programación con TypeScript: Proyecto sistema de votación
3h 0m
Desarrolla un sistema de votación en TypeScript con gestión de candidatos, votantes y resultados usando interfaces y clases.
Crea un nuevo proyecto TypeScript y configura el entorno con
tsconfig.json
adecuado para el proyecto. Define las interfaces principalesICandidato
,IVotante
yIVoto
con sus propiedades correspondientes.Implementa la clase
SistemaVotacion
con propiedades para almacenar candidatos, votantes y votos. Incluye un constructor que inicialice estas propiedades como colecciones vacías.Desarrolla los métodos para gestionar candidatos:
registrarCandidato(candidato: ICandidato): boolean
yobtenerCandidatos(): ICandidato[]
. El método de registro debe validar que no exista un candidato con el mismo ID.Implementa los métodos para gestionar votantes:
registrarVotante(votante: IVotante): boolean
,autenticarVotante(id: string, contraseña: string): boolean
yobtenerVotantes(): IVotante[]
. Incluye validaciones para evitar duplicados.Crea los métodos para la gestión de votos:
emitirVoto(idVotante: string, idCandidato: string): boolean
yobtenerVotos(): IVoto[]
. El método de emisión debe verificar que el votante esté registrado, no haya votado ya y que el candidato exista.Desarrolla un método
obtenerResultados(): Map<string, number>
que devuelva un mapa con los IDs de los candidatos y la cantidad de votos recibidos. Implementa también un métodoobtenerGanador(): ICandidato | null
que determine el candidato con más votos.Implementa métodos para obtener estadísticas:
calcularParticipacion(): number
(porcentaje de votantes que han emitido su voto) yobtenerEstadisticasPorCandidato(): Map<string, number>
(porcentaje de votos por candidato).Crea una clase genérica
Eleccion<T extends ICandidato>
que permita especializar el sistema para diferentes tipos de elecciones (presidenciales, municipales, etc.) extendiendo la interfaz base de candidato.Desarrolla un archivo
index.ts
que demuestre el funcionamiento del sistema: registra varios candidatos y votantes, simula un proceso de votación y muestra los resultados y estadísticas.Implementa manejo de errores con excepciones personalizadas para los casos de uso incorrectos del sistema (votante ya registrado, candidato inexistente, etc.).
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
Reto composición de funciones
Reto tipos especiales
Reto tipos genéricos
Módulos
Polimorfismo
Funciones TypeScript
Interfaces
Funciones puras
Reto namespaces
Funciones flecha
Polimorfismo
Operadores
Conversor de unidades
Funciones flecha
Control de flujo
Herencia
Clases
Proyecto validación de tipado
Clases y objetos
Tecnologías de este ejercicio de programación
Entornos de desarrollo para este ejercicio

Visual Studio Code

GitHub