typia para TypeScript: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es typia y para qué sirve?

\n\n

typia es una potente biblioteca para TypeScript que proporciona verificación de tipos en tiempo de ejecución (runtime type validation) con una característica única: genera código de verificación en la etapa de compilación (compile-time), no durante la ejecución. Esto la convierte en una de las bibliotecas más rápidas para la validación de datos en el ecosistema TypeScript.

\n\n

Los principales problemas que resuelve typia:

\n
    \n
  • Rendimiento: A diferencia de bibliotecas populares (zod, yup, io-ts), typia no utiliza reflexión ni decoradores. En su lugar, genera código de verificación optimizado en la etapa de compilación, lo que proporciona un aumento de velocidad de 10 a 100 veces.
  • \n
  • Seguridad de tipos: Obtiene la garantía de que los datos provenientes de fuentes externas (API, bases de datos, formularios) coinciden con sus interfaces de TypeScript.
  • \n
  • Mínimo boilerplate: No necesita escribir esquemas de validación separados: typia utiliza sus tipos TypeScript existentes.
  • \n
  • Soporte para tipos complejos: Union, intersection, conditional types, mapped types: todo funciona "de fábrica".
  • \n
\n\n

La biblioteca es especialmente útil para:

\n
    \n
  • Desarrollo backend en Node.js con TypeScript
  • \n
  • Aplicaciones frontend donde se requiere validación de formularios o respuestas de API
  • \n
  • Arquitectura de microservicios, donde la velocidad de serialización/deserialización es importante
  • \n
  • Proyectos donde el rendimiento y la seguridad de tipos son críticos
  • \n
\n\n

Instalación

\n\n

La instalación de typia consta de dos pasos: la biblioteca en sí y el transformador de TypeScript (compilador).

\n\n

Paso 1. Instalación mediante npm

\n
npm install typia\n# o\nyarn add typia\n# o\npnpm add typia
\n\n

Paso 2. Instalación del transformador

\n
npm install --save-dev typia-transform\n# o\nyarn add -D typia-transform\n# o\npnpm add -D typia-transform
\n\n

Paso 3. Configuración de tsconfig.json

\n

Agregue el plugin a su tsconfig.json:

\n
{\n  "compilerOptions": {\n    "plugins": [\n      {\n        "transform": "typia-transform"\n      }\n    ]\n  }\n}
\n\n

Paso 4. Uso con ttypescript (recomendado)

\n

Instale ttypescript para la transformación automática:

\n
npm install --save-dev ttypescript
\n

Luego reemplace tsc por ttsc en sus scripts de package.json:

\n
{\n  "scripts": {\n    "build": "ttsc",\n    "start": "node dist/index.js"\n  }\n}
\n\n

Importante: typia requiere TypeScript versión 4.4 o superior. Sin el transformador, la biblioteca no funcionará.

\n\n

Inicio rápido con ejemplo de código

\n\n

Vamos a crear un ejemplo simple de validación de datos de usuario.

\n\n
import typia from "typia";\n\n// Definimos la interfaz\ninterface IUser {\n  id: number;\n  name: string;\n  email: string;\n  age: number;\n  isActive: boolean;\n}\n\n// Creamos la función de validación\nconst validateUser = typia.createValidate<IUser>();\n\n// Datos de prueba\nconst testData = {\n  id: 1,\n  name: "Iván Petrov",\n  email: "ivan@example.com",\n  age: 30,\n  isActive: true,\n};\n\n// Validación\nconst result = validateUser(testData);\n\nif (result.success) {\n  console.log("Datos válidos:", result.data);\n} else {\n  console.log("Error de validación:", result.errors);\n}\n\n// Ejemplo con datos incorrectos\nconst badData = {\n  id: "no es un número", // Debería ser number\n  name: "Iván",\n  email: "no es un email",\n  age: -5,\n  isActive: "sí", // Debería ser boolean\n};\n\nconst badResult = validateUser(badData);\nconsole.log("Errores:", badResult.errors);
\n\n

Este ejemplo muestra lo fácil que es validar datos usando solo una interfaz de TypeScript. ¡Sin esquemas adicionales ni decoradores!

\n\n

Métodos y funciones principales

\n\n

1. typia.

Recommendations