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.
Geração de tipos
Compare o tag ausente e o score com null no exemplo. Se houver um contrato definido, escolha o modo auxiliar Schema.
Análise e geração neste navegador. A entrada não é enviada nem armazenada.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
Use JSON para TypeScript com respostas variadas, revise campos opcionais e null e exporte as declarações para conferir no seu projeto.