Saltar al contenido
Totalmente local

Tipo TypeScript a JSON Schema

Convierte una interfaz o alias de tipo de TypeScript a JSON Schema.

Entrada
Salida

Tipo TypeScript a JSON Schema

Pega una interfaz o alias de tipo de TypeScript y esta herramienta genera el JSON Schema equivalente, listo para validar payloads de API, archivos de configuración o cualquier otro dato JSON que deba coincidir con tus definiciones de tipo. Está construida para desarrolladores que ya describen sus formas de datos en TypeScript y quieren un esquema sin escribir uno desde cero o configurar un paso de compilación.

Elige entre JSON Schema draft-07 y el dialecto más nuevo 2020-12, ya que validadores y herramientas aún difieren en cuál esperan. Las uniones de literales de cadena como 'activo' | 'inactivo' pueden representarse como un enum o como anyOf de valores const, y puedes requerir que los objetos rechacen propiedades desconocidas, convertir comentarios de documentación en campos de descripción, o extraer interfaces nombradas en un bloque $defs (o definitions) referenciado por $ref en lugar de insertarlas en todas partes donde se usan.

Los arrays, tuplas, tipos Record y Map, y las uniones que incluyen null se manejan de la forma en que TypeScript realmente los usa — un campo que puede ser null se convierte en un array de tipos o una rama anyOf en lugar de ser silenciosamente eliminado. Las construcciones que no tienen equivalente en JSON Schema, como métodos, tipos de función o parámetros genéricos no resueltos, se convierten de la manera más permisiva posible y se enumeran como advertencias bajo el resultado para que nada falle silenciosamente.

Todo se ejecuta localmente en tu navegador; tus definiciones de tipo y el esquema generado nunca se cargan en ningún lugar. Copia el resultado, descárgalo como archivo .txt, o envíalo directamente a la entrada de otra herramienta para continuar trabajando en él.

Preguntas frecuentes

¿Qué partes de TypeScript puede convertir?
Interfaces, alias de tipo, literales de objeto anidados, arrays, tuplas, Record/Map/Set, Date, Partial/Required/Pick/Omit, y uniones incluyendo uniones de literales de cadena y null. Las construcciones que no tienen equivalente en JSON Schema, como métodos y tipos de función, se omiten y se enumeran como advertencias.
¿Cuál es la diferencia entre draft-07 y 2020-12?
Ambos son dialectos de JSON Schema. 2020-12 es el actual y usa $defs y prefixItems para tuplas, mientras que draft-07 usa definitions y un array de items. Elige el que espere tu validador.
¿Qué sucede con las propiedades marcadas con '?'?
Se omiten del array required del esquema, de modo que el esquema generado coincida con la idea propia de TypeScript sobre qué campos son opcionales.
¿Por qué algunos campos terminan como un esquema vacío {}?
Eso sucede para construcciones que JSON Schema no puede expresar, como un parámetro de tipo genérico o un tipo que la herramienta no pudo resolver. Se agrega una advertencia debajo del resultado explicando exactamente qué campo y por qué.
¿Se carga mi código TypeScript en algún lugar?
No. La conversión se ejecuta completamente en tu navegador — tus definiciones de tipo y el esquema generado nunca abandonan tu dispositivo.