Ejercicio de programación con TypeScript: Proyecto validación de tipado
3h 0m
Desarrolla un sistema modular de validación de tipos en TypeScript con validadores primitivos, compuestos y personalizados para datos complejos.
Crea un nuevo proyecto TypeScript con la estructura básica de archivos:
tsconfig.json
,src/index.ts
,src/validators/index.ts
, ysrc/types/index.ts
.Define en el archivo
src/types/index.ts
las interfaces básicas para el sistema de validación. Debes crear una interfazValidationResult
que indique si la validación ha sido exitosa y, en caso contrario, el mensaje de error. También define una interfazValidator<T>
que represente una función que recibe un valor y devuelve unValidationResult
.Implementa en
src/validators/primitives.ts
los validadores básicos para tipos primitivos:isString
,isNumber
,isBoolean
eisDate
. Cada uno debe devolver un objeto que cumpla con la interfazValidationResult
.Crea en
src/validators/composite.ts
funciones para validar estructuras de datos complejas como arrays (isArray
) y objetos (isObject
), que puedan utilizar otros validadores para verificar los elementos internos.Desarrolla en
src/validators/custom.ts
validadores personalizados para formatos específicos como email (isEmail
), código postal español (isSpanishPostalCode
) y número de teléfono (isPhoneNumber
).Implementa en
src/validators/utils.ts
funciones de utilidad comooptional
(para campos opcionales),oneOf
(para validar que un valor cumpla con al menos uno de varios validadores) yallOf
(para validar que un valor cumpla con todos los validadores proporcionados).Crea en
src/validators/schema.ts
una funciónvalidateSchema
que reciba un objeto y un esquema de validación (definido como un objeto donde cada clave tiene asociado un validador) y verifique si el objeto cumple con el esquema.Implementa en
src/index.ts
ejemplos de uso de tu sistema de validación con diferentes estructuras de datos, mostrando tanto casos exitosos como fallidos.Añade pruebas unitarias en un directorio
tests
que verifiquen el correcto funcionamiento de todos los validadores implementados.Documenta tu código con comentarios JSDoc que expliquen el propósito de cada función, sus parámetros y valores de retorno.
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
Clases y objetos
Tecnologías de este ejercicio de programación
Entornos de desarrollo para este ejercicio

Visual Studio Code

GitHub