Geradores e estruturas de código

JSON para TypeScript

Cole uma amostra JSON para gerar uma interface ou um alias type de TypeScript.

Entrada JSON

Código gerado

Combine todas as amostras e gere TypeScript com campos opcionais, uniões e tipos aninhados.

O JSON e o código gerado são tratados apenas no navegador, sem envios nem gravação automática. Nenhum código incluído na entrada é executado.

Sobre esta ferramenta

Gere declarações de tipos TypeScript a partir de JSON para rever campos, arrays e estruturas aninhadas. Todos os elementos do array são considerados e os campos ausentes em alguns objetos tornam-se opcionais. O resultado contém definições de tipos, não os valores originais.

Como utilizar

  1. Introduza JSON válido, de preferência um objeto ou um array de objetos.
  2. Defina o nome do tipo raiz e escolha interface ou type.
  3. Clique em «Converter» e verifique os sinais ? dos campos opcionais, as uniões com null e os tipos aninhados.
  4. Copie o código ou descarregue o ficheiro .ts com o nome normalizado do tipo raiz.

Exemplos

  • [{"id":1,"name":"Ana"},{"id":2,"email":"a@example.com"}]: id é obrigatório; name e email são opcionais.
  • [1,"a",true]: o tipo dos elementos preserva a união de number, string e boolean.
  • {"date":"2026-01-01","matrix":[[1,2],[3,4]]}: date é string e matrix é number[][].

Regras de conversão de tipos

As cadeias são convertidas em string; os inteiros e decimais, em number; os booleanos, em boolean. A ausência e null explícito são registados separadamente: um campo ausente recebe ?, e um tipo conhecido que também admite null recebe | null. Uma amostra apenas com null não permite inferir string. Os arrays vazios usam unknown[] e os objetos geram tipos aninhados com nomes estáveis. As propriedades com nomes inválidos são escritas entre aspas; os nomes de tipos são normalizados e evitam-se conflitos. As datas continuam a ser string. As amostras não garantem que todos os dados futuros respeitem o tipo. Entrada e saída: até 1 MiB cada; 64 níveis, 100000 nós, 5000 campos combinados e 256 tipos. Inteiros não seguros, números não finitos e valores arredondados para zero por subfluxo originam um erro. Os restantes decimais dependem da precisão de vírgula flutuante do navegador.

Utilizações comuns

  • Criar rascunhos de tipos a partir de respostas de API.
  • Detetar campos que podem faltar em arrays de objetos.
  • Criar declarações legíveis para JSON aninhado.

Privacidade

O JSON e o código gerado são tratados apenas no navegador, sem envios nem gravação automática. Nenhum código incluído na entrada é executado.

Se quiser guardar os resultados, copie-os ou descarregue-os antes de sair da página.

Perguntas frequentes

Porque não são as datas convertidas em Date?

JSON não tem um tipo Date. As cadeias com aspeto de data continuam a ser string; a aplicação deve tratar da conversão durante a execução.

Como são detetados os campos opcionais?

Um campo torna-se opcional quando aparece em alguns objetos de amostra, mas falta noutros. Inclua várias amostras representativas para refletir melhor os campos.

Qual é a diferença entre null e um campo ausente?

Com null, o campo existe e tem um valor nulo; um campo ausente não existe. São representados por uma união de tipos e uma marca opcional, respetivamente.

O que acontece quando os elementos têm tipos diferentes?

As estruturas de objetos compatíveis são combinadas. Inteiros e decimais passam a number, enquanto tipos básicos diferentes são preservados numa união.

O resultado valida completamente os dados?

Não. TypeScript fornece uma descrição estática; não valida automaticamente JSON durante a execução nem infere casos ausentes das amostras.

Voltar ao diretório de ferramentas