Generador de JSON Schema desde TypeScript Interface (Draft-07 y 2020-12)
Compilador de esquemas TypeScript

Generador de JSON Schema desde TypeScript Interface (Draft-07 y 2020-12)

Transforme interfaces, tipos de TypeScript y comentarios JSDoc en definiciones estándar de JSON Schema para contratos de API y generadores de formularios.

Conformidad con Draft-07 y 2020-12
Cero transmisión al servidor
Preajustes:
Versión de Draft:
Tipo Raíz:
Clave de Definiciones:
Propiedades Adicionales:
Indentación:
Interfaces y Tipos TypeScript0 Tipos
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EmptySchema",
  "type": "object",
  "properties": {}
}
Interfaces y Tipos
0AST analizado
Versión de JSON Schema
Draft 2020-12$defs
Propiedades y Reglas
0reglas sintetizadas

100% Procesamiento AST en Cliente

La extracción de tipos y la generación de esquemas se ejecutan localmente en el navegador. Cero telemetría o envío de datos al servidor.

Conformidad con Draft-07 y 2020-12

Soporte integral para $defs/definitions, tuplas prefixItems, tipado estricto y resolución de enumeraciones según el estándar.

Inferencia JSDoc y Restricciones

Extrae @description, @minimum, @maximum, @format, @pattern y @default directamente del código para esquemas aptos para OpenAPI.

Referencia técnica y guía de arquitectura

Guía de Desarrollo: Generador de TypeScript Interface a JSON Schema (Draft-07 & 2020-12) — Guía de referencia

Transforme interfaces, tipos de TypeScript y comentarios JSDoc en definiciones estándar de JSON Schema para contratos de API y generadores de formularios.

Parámetros clave y controles

targetDraftstring

Dialecto de especificación JSON Schema de destino ('draft-07', '2020-12' o 'draft-04').

Por defecto: draft-07
strictNullChecksboolean

Habilita la gestión estricta de nulabilidad, diferenciando T | null y T | undefined mediante arrays de tipos o anyOf.

Por defecto: true
topRefboolean

Genera una referencia $ref en la raíz que apunta a la definición principal en $defs o definitions.

Por defecto: true
additionalPropertiesboolean

Determina si los esquemas de objetos prohíben propiedades no declaradas estableciendo 'additionalProperties: false'.

Por defecto: false
extractCommentsboolean

Extrae comentarios JSDoc y mapea etiquetas de validación (@minimum, @maximum, @format, @pattern) a restricciones del esquema.

Por defecto: true

Consejos profesionales y mejores prácticas

Aproveche etiquetas JSDoc como

Aproveche etiquetas JSDoc como @minimum 1, @maximum 100, @pattern ^[a-z]+$ y @format email en sus interfaces TypeScript para producir esquemas ricos sin librerías externas de validación.

Draft-07 organiza las definiciones

Draft-07 organiza las definiciones secundarias en 'definitions', mientras que Draft 2020-12 estandariza el uso de '$defs'. Verifique que su validador (como Ajv v8 o jsonschema en Python) coincida con el dialecto seleccionado.

Las uniones estándar

Las uniones estándar (A | B) se compilan en anyOf, mientras que las uniones discriminadas que comparten una propiedad literal se asignan a oneOf con const o enum, garantizando una validación inequívoca.

Errores comunes y solución de problemas

Referencias circulares y tipos recursivos

Active 'topRef' y la reutilización de definiciones para que los nodos recursivos utilicen punteros como '#/$defs/TreeNode' o '#/definitions/TreeNode' en lugar de duplicarse indefinidamente.

Tipos de utilidad complejos (Omit, Pick, tipos mapeados) generan esquemas vacíos

Normalice previamente los tipos de utilidad en interfaces concretas intermedias para permitir que el analizador AST extraiga todas las propiedades con precisión.

Preguntas frecuentes (FAQ)

¿Cómo maneja el generador las propiedades opcionales (prop?: string)?▼

En TypeScript, una propiedad con '?' es opcional. En JSON Schema, los campos son opcionales a menos que figuren en la lista 'required'. Con strictNullChecks activo, 'prop?: string' se omite de 'required', mientras que 'prop: string | null' se mantiene en 'required' con un tipo ['string', 'null'].

¿Qué etiquetas JSDoc se convierten en reglas de validación de JSON Schema?▼

El texto descriptivo se traslada al atributo 'description'. Etiquetas como @minimum, @maximum, @minLength, @maxLength, @pattern, @format (email, uri, date-time, uuid), @default y @deprecated se convierten en restricciones nativas del esquema.

¿Cuáles son las diferencias clave entre Draft-07 y Draft 2020-12?▼

Draft-07 utiliza 'definitions' y valida tuplas mediante matrices en 'items'. Draft 2020-12 adopta '$defs', introduce 'prefixItems' para tuplas y se alinea con OpenAPI 3.1 y los estándares modernos de la web.

¿Se pueden exportar múltiples interfaces desde un mismo archivo TypeScript?▼

Sí. Al designar la interfaz principal o raíz, todos los tipos y subtipos referenciados se compilan de manera modular dentro de '$defs' o 'definitions', vinculados automáticamente mediante URIs relativas $ref.

Herramientas y utilidades relacionadas

Todas las herramientas →