Saltar al contenido

OpenAPI a tipos TypeScript

Convierte un documento OpenAPI o Swagger en interfaces y tipos de TypeScript.

Entrada

OpenAPI a tipos TypeScript

Pega un documento OpenAPI 3 o Swagger 2 — JSON o YAML — y esta herramienta genera interfaces TypeScript coincidentes para cada esquema en components/schemas, más un tipo por punto final para sus parámetros de ruta y consulta, cuerpo de solicitud y respuestas. Ahorra el paso de escribir manualmente tipos de API cada vez que cambia la especificación, y mantiene el cliente sincronizado con lo que el servidor realmente devuelve.

Las opciones controlan la forma de la salida. Elige declaraciones interface o type, y decide cómo se representan los campos anulables: como una propiedad opcional (x?: string) o como una unión con null (x: string | null). Las referencias $ref pueden permanecer como tipos nombrados que apunten a la interfaz coincidente, o expandirse en línea dondequiera que se usen. Desactiva "generar tipos de ruta, parámetro y respuesta" para obtener solo los esquemas de componentes, o activa una unión de código de estado para ver cada código de respuesta que un punto final puede devolver como un único tipo. Las descripciones de la especificación se convierten en comentarios JSDoc encima de cada campo, y un prefijo de nombre evita que los tipos generados colisionen con los tuyos cuando los pegas en una base de código más grande.

El analizador lee construcciones OpenAPI estándar — esquemas de objeto y array, enumeraciones, oneOf/anyOf/allOf, nullable, additionalProperties — y sigue punteros $ref locales dentro del mismo documento. Los puntos finales marcados como obsoletos pueden omitirse por completo, y un documento que no parezca OpenAPI (sin sección components/schemas o paths) produce un error claro en lugar de una salida en blanco.

Todo se ejecuta localmente en tu navegador — tu especificación de API, que puede describir un producto no lanzado o un sistema interno, nunca se sube a ningún lado. Copia los tipos generados, descárgalos como archivo .txt para pegar en un archivo .ts, o envía la salida directamente nuevamente a la entrada para seguir refinándola.

Preguntas frecuentes

¿Admite documentos OpenAPI 3 y Swagger 2?
Sí. Ambos utilizan la misma estructura de paths, y las definiciones de Swagger 2 se leen de la misma manera que los components/schemas de OpenAPI 3.
¿Qué sucede con las referencias $ref que apuntan fuera del documento?
Solo se resuelven las referencias locales (comenzando con #/). Una referencia $ref a un archivo externo se mantiene como un tipo nombrado pero no se puede expandir, ya que no hay nada más del cual leerla.
¿Puedo generar tipos solo para los puntos finales, sin cada esquema de componentes?
Los esquemas de componentes siempre se generan cuando están presentes, ya que los tipos de solicitud y respuesta generalmente los hacen referencia. Desactiva los tipos de ruta para omitir todo lo derivado de paths y mantener solo los esquemas.
¿Por qué una referencia de esquema circular permanece como un tipo nombrado incluso con "expand" activado?
Un esquema que se referencia a sí mismo, directa o indirectamente a través de otro esquema, no se puede insertar en línea sin entrar en un bucle infinito, por lo que esa referencia se revierte al tipo nombrado mientras el resto aún se expande.
¿Se sube mi especificación de API a algún lado?
No. El análisis y la generación de tipos se ejecutan completamente en tu navegador — tu documento nunca abandona tu dispositivo.