Geração de tipos

JSON para TypeScripttipos que acompanham as diferenças das respostas

Compare o tag ausente e o score com null no exemplo. Se houver um contrato definido, escolha o modo auxiliar Schema.

JSON para TypeScript

Entrada JSON

Análise e geração neste navegador. A entrada não é enviada nem armazenada.

Resultado TypeScript

Opções de geração

Campos ausentes ficam opcionais; null é preservado. Arrays vazios viram unknown[]. Use strictNullChecks no projeto.

3 declarações · 1 propriedades opcionais

JSON para TypeScript ajuda a montar o primeiro modelo de uma resposta de API. Um único retorno bem-sucedido pode esconder campos que às vezes faltam. Reúna registros representativos em um array antes de levar as declarações para o projeto.

Este conversor distingue a ausência de uma propriedade de um valor null explícito. A geração de tipos oferece um ponto de partida: respostas de erro, variações futuras e regras do negócio ainda precisam ser conferidas na documentação da API.

Por que usar JSON para TypeScript aqui?

Analisar o array inteiro

JSON para TypeScript considera todos os elementos fornecidos. Se um objeto não tiver tag, o campo será opcional. Se score alternar entre número e null, o tipo será uma união. Ausência e valor vazio continuam sendo informações diferentes.

Dois registros formam um tipo: uma marca tracejada indica um campo ausente e uma marca vazada indica null.

Informar um contrato além da amostra

Um Schema pode definir campos obrigatórios e valores de enum que não aparecem no exemplo. Escolha esse modo explicitamente. Restrições não suportadas interrompem a geração e mostram o caminho, sem desaparecer silenciosamente do resultado.

Amostras e um contrato estrutural seguem caminhos diferentes até cartões com declarações de tipos.

O que conferir antes de exportar

01

Colocar as variantes na mesma posição

Agrupe os registros em um array JSON válido. A comparação ocorre entre objetos na mesma posição estrutural. Propriedades com nomes iguais em outras partes do documento não viram um único modelo automaticamente.

02

Selecionar o modo antes do exemplo

Trocar o modo mantém o texto digitado. O botão Exemplo carrega conteúdo para o modo escolhido. No Schema, required controla a obrigatoriedade; a opção de tornar todos os campos opcionais afeta apenas amostras.

03

Conferir o resultado depois de editar

A geração automática aguarda 350 ms após mudanças. Desative para exibir Gerar ou use Ctrl/Cmd+Enter. Alterar entrada ou opções bloqueia a exportação até o novo resultado dar certo. Root serve de base para os nomes derivados.

Dos valores às declarações nomeadas

Todos os itens participam da inferência

Números e strings na mesma posição formam uma união. Arrays aninhados também são analisados. Arrays vazios aproveitam os tipos encontrados em outros arrays com itens naquela posição; sem evidência de elementos, ficam como unknown[]. Não são geradas tuplas de tamanho fixo.

Opcional não é o mesmo que null

Uma propriedade ausente em parte dos objetos recebe ?. Um valor null presente continua null ou membro de uma união. Só null não revela se o valor futuro será string ou number. Ative strictNullChecks no projeto para usar essa distinção na checagem.

Interfaces TypeScript com nomes derivados

Objetos aninhados recebem declarações próprias. Os nomes vêm do campo pai, com sufixos numéricos estáveis para evitar colisões. As chaves mantêm a grafia original, entre aspas quando necessário. A raiz aceita identificadores ASCII de até 64 caracteres, sem palavras reservadas.

Entrada auxiliar com Schema limitado

O conversor JSON para TypeScript aceita Schemas booleanos, type, properties, required, um único Schema items, additionalProperties booleano, enum/const escalares e anyOf limitado. Escolha interface ou type, export e recuo de dois ou quatro espaços. integer vira number.

Onde a inferência encontra seus limites

Uma amostra não cobre a API inteira
A inferência usa apenas os valores recebidos. A união de objetos por campo não conserva relações entre discriminadores e outras propriedades. Datas e UUIDs permanecem string; conjuntos enum não são adivinhados. Acrescente variantes que ainda não foram representadas.
Sem validação em tempo de execução
São declarações estáticas, sem parser, classe, Zod ou serializador. number não impõe valores inteiros nem precisão segura. additionalProperties=false remove a assinatura de índice, mas a tipagem estrutural não garante objetos exatos em tempo de execução.
Restrições não suportadas geram erro
Referências, definições, oneOf/allOf, condições, format, padrões, comprimentos, intervalos e tuplas são rejeitados. Palavras de objeto e array exigem um type explícito correspondente. Schema em additionalProperties, enum com objetos ou arrays e literais numéricos grandes demais não são aceitos.
Um documento JSON estrito
Comentários, vírgulas finais, chaves repetidas e JSONL interrompem a conversão. Erros de sintaxe mostram linha e coluna. Não há reparo, leitura de URL, importação de arquivo ou lote. Um campo chamado type não ativa o modo Schema automaticamente.
Limites sem declarações cortadas
Até 500.000 caracteres de entrada, profundidade 100, 50.000 nós, 1.000.000 caracteres de saída e 1.000 declarações. Ultrapassar um limite impede exportar. Um objeto vazio sem evidência de campos recebe assinatura de índice unknown, em vez do tipo amplo demais {}.

Dúvidas sobre JSON para TypeScript

Como null é tratado?

O valor é preservado como null ou parte de uma união. Com um número no mesmo campo, o resultado é number | null. Um campo que só aparece como null não permite deduzir outro tipo. Ausência de propriedade é uma questão separada.

O que acontece com arrays vazios?

Sem elementos, o tipo é unknown[]. Quando outros arrays na mesma posição têm valores, esses tipos ajudam na inferência conjunta. A ferramenta não escolhe string[] ou um modelo de objeto sem dados que sustentem a escolha.

Objetos aninhados são suportados?

Sim. JSON para TypeScript cria declarações nomeadas para eles, usando a raiz e o campo que os contém. Colisões recebem sufixos. As propriedades originais não são renomeadas, mesmo quando precisam de aspas no código.

Como faço para converter JSON em TypeScript?

Use o modo de amostra para uma resposta comum e ajuste a raiz e a declaração. Para inferir campos que podem faltar, inclua variantes no mesmo array. Com a geração automática desligada, clique em Gerar ou use Ctrl/Cmd+Enter.

Existe um limite de tamanho?

Sim: 500.000 caracteres, 50.000 nós e 100 níveis de entrada. A saída aceita até 1.000.000 caracteres e 1.000 declarações. Ao exceder, a ferramenta mostra erro e impede copiar um resultado incompleto.

Encontrou uma inferência que precisa de revisão?

Comece com várias respostas

Use JSON para TypeScript com respostas variadas, revise campos opcionais e null e exporte as declarações para conferir no seu projeto.