Gerador de JSON Schema a partir de TypeScript Interface (Draft-07 e 2020-12)
Compilador de Esquema TypeScript

Gerador de JSON Schema a partir de TypeScript Interface (Draft-07 e 2020-12)

Converta interfaces TypeScript, type aliases e comentários JSDoc em esquemas JSON Schema padronizados para contratos de API e validação de formulários.

Conformidade com Draft-07 e 2020-12
Zero transmissão ao servidor
Predefinições:
Versão do Draft:
Tipo Raiz:
Chave de Definições:
Propriedades Adicionais:
Indentação:
Interfaces e Tipos TypeScript0 Tipos
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EmptySchema",
  "type": "object",
  "properties": {}
}
Interfaces e Tipos
0AST analisado
Versão JSON Schema
Draft 2020-12$defs
Propriedades e Regras
0regras sintetizadas

100% Análise AST no Navegador

O parsing do TypeScript e a compilação do JSON Schema ocorrem estritamente no seu navegador. Zero dados transmitidos para servidores.

Conformidade Draft-07 e 2020-12

Total aderência aos padrões oficiais de JSON Schema, suportando $defs/definitions, prefixItems de tuplas e mapeamento estrito.

Extração JSDoc e Restrições

Reconhece @description, @minimum, @maximum, @format, @pattern e @default para gerar esquemas de alto nível prontos para produção.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de TypeScript Interface para JSON Schema (Draft-07 & 2020-12) — Guia de referência

Converta interfaces TypeScript, type aliases e comentários JSDoc em esquemas JSON Schema padronizados para contratos de API e validação de formulários.

Parâmetros principais e controles

targetDraftstring

Dialeto de especificação JSON Schema de destino ('draft-07', '2020-12' ou 'draft-04').

Padrão: draft-07
strictNullChecksboolean

Habilita a checagem rigorosa de nulabilidade, diferenciando T | null e T | undefined via array de tipos ou anyOf.

Padrão: true
topRefboolean

Gera uma referência $ref na raiz apontando para a definição principal em $defs ou definitions.

Padrão: true
additionalPropertiesboolean

Define se objetos devem rejeitar propriedades não declaradas adicionando 'additionalProperties: false'.

Padrão: false
extractCommentsboolean

Lê anotações JSDoc e converte tags de validação (@minimum, @maximum, @format, @pattern) em restrições diretas do esquema.

Padrão: true

Dicas profissionais e melhores práticas

Validação avançada via anotações JSDoc

Utilize tags JSDoc como @minimum 1, @maximum 100, @pattern ^[a-z]+$ e @format email diretamente nas interfaces TypeScript para produzir esquemas ricos sem dependências externas.

O Draft-07 armazena interfaces

O Draft-07 armazena interfaces reutilizáveis sob a chave 'definitions', enquanto o Draft 2020-12 utiliza '$defs'. Escolha a versão compatível com seu validador de backend (como Ajv v8 ou jsonschema em Python).

Unions comuns

Unions comuns (A | B) resultam em estruturas anyOf, enquanto uniões discriminadas com literais fixos são convertidas para oneOf com const ou enum, garantindo validação estrita.

Problemas comuns e solução de problemas

Tipos recursivos e referências circulares

Habilite 'topRef' e a reutilização de definições para que propriedades filhas apontem para '#/$defs/TreeNode' ou '#/definitions/TreeNode' em vez de expansão inline.

Tipos utilitários complexos (Omit, Pick, Partial) gerando schemas vazios

Converta ou pré-avalie os utility types em interfaces explícitas intermediárias antes da conversão para garantir a extração correta de campos.

Perguntas frequentes (FAQ)

Como o gerador trata campos opcionais (prop?: string)?▼

No TypeScript, a interrogação indica omissão permitida. No JSON Schema, propriedades são opcionais por padrão, a não ser que constem no array 'required'. Sob strictNullChecks, 'prop?: string' não entra em 'required', enquanto 'prop: string | null' permanece em 'required' com o tipo ['string', 'null'].

Quais tags JSDoc são suportadas na conversão para JSON Schema?▼

O texto de documentação preenche o campo 'description'. Tags como @minimum, @maximum, @minLength, @maxLength, @pattern, @format (como date-time, email, uri, uuid), @default e @deprecated tornam-se palavras-chave nativas de validação.

Qual a diferença entre a saída Draft-07 e Draft 2020-12?▼

O Draft-07 adota 'definitions' e arrays em 'items' para tuplas. O Draft 2020-12 utiliza '$defs', padroniza tuplas com 'prefixItems' e oferece paridade total com o OpenAPI 3.1.

É possível processar múltiplas interfaces a partir do mesmo código TypeScript?▼

Sim. Ao definir a interface principal, todos os tipos auxiliares, enums e interfaces importadas referenciadas são organizados modularmente dentro de '$defs' ou 'definitions' através de $ref.

Ferramentas e utilitários relacionados

Todas as ferramentas →