openapi-typescript 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

openapi-typescript para TypeScript: guía completa con ejemplos

En el desarrollo web moderno, las interfaces API juegan un papel fundamental, y su especificación mediante el estándar OpenAPI (anteriormente Swagger) se ha convertido en el estándar de facto. Sin embargo, mantener manualmente los tipos de TypeScript en sincronía con la especificación OpenAPI es un proceso tedioso y propenso a errores. La librería openapi-typescript resuelve este problema generando automáticamente tipos estrictos de TypeScript basados en tu esquema OpenAPI (v3.0 y v3.1).

El objetivo principal de la librería es garantizar una interacción type-safe con la API. En lugar de declarar interfaces manualmente para cada endpoint, ejecutas un generador que crea un archivo único (o varios) con tipos para todas las solicitudes, respuestas, parámetros y esquemas. Esto no solo ahorra tiempo, sino que asegura que tus tipos estén siempre sincronizados con la versión actual de la API. Si la especificación cambia, solo necesitas regenerar los tipos y el compilador de TypeScript te señalará inmediatamente cualquier inconsistencia en el código.

La librería se utiliza activamente en proyectos donde la fiabilidad y la velocidad de desarrollo son críticas: desde arquitecturas de microservicios hasta aplicaciones SPA. Soporta la generación tanto para el lado del cliente (por ejemplo, para fetch o axios) como para el lado del servidor (por ejemplo, para Express o Fastify). En este artículo, analizaremos en detalle la instalación, los métodos principales, ejemplos reales y errores típicos.

Instalación

Para instalar la librería, usa npm o yarn. El comando instalará tanto el generador como las dependencias necesarias.

npm install openapi-typescript typescript @types/node --save-dev

O mediante yarn:

yarn add -D openapi-typescript typescript @types/node

Si planeas usar los tipos generados en tiempo de ejecución (por ejemplo, para validación), instala adicionalmente openapi-typescript-helpers:

npm install openapi-typescript-helpers

Inicio rápido — ejemplo mínimo funcional

Supongamos que tienes un archivo spec.yaml con una especificación OpenAPI. Vamos a crear un script simple para generar los tipos.

// generate.ts
import { createClient } from 'openapi-typescript';
import * as fs from 'fs';

async function main() {
  const spec = fs.readFileSync('./spec.yaml', 'utf-8');
  const result = await createClient(spec, { format: 'yaml' });
  fs.writeFileSync('./api-types.d.ts', result);
  console.log('Tipos generados en api-types.d.ts');
}

main().catch(console.error);

Ejecuta el script:

npx ts-node generate.ts

Después de esto, en el archivo api-types.d.ts aparecerán todos los tipos correspondientes a tu especificación. Ahora puedes importarlos en tu proyecto:

import type { paths, components } from './api-types';

// Uso del tipo para un endpoint específico
type GetUsersResponse = paths['/users']['get']['responses'][200]['content']['application/json'];

Métodos y funciones principales

1. createClient(schema: string, options?: ClientOptions): Promise<string>

Qué hace: Método principal para generar tipos. Recibe una cadena con la especificación (JSON o YAML) y devuelve una cadena con código TypeScript.

import { createClient } from 'openapi-typescript';
import * as fs from 'fs';

const spec = fs.readFileSync('./spec.json', 'utf-8');
const types = await createClient(spec, { format: 'json' });
fs.writeFileSync('./types.d.ts', types);

2. createClientFromUrl(url: string, options?: ClientOptions): Promise<string>

Qué hace: Carga de forma asíncrona la especificación desde una URL y genera los tipos. Útil para APIs remotas.


                
    
    

Recommendations