JSON → tipos TypeScript
Infira interfaces TypeScript de um exemplo JSON instantaneamente
Sobre esta ferramenta
Cole uma amostra de JSON — uma resposta de API, um arquivo de configuração — e receba uma interface TypeScript inferida dela: objetos aninhados viram tipos aninhados, arrays ganham tipos de elemento (com unions para conteúdos mistos) e chaves que não são identificadores válidos recebem aspas corretamente.
Tipos gerados são um ponto de partida, não um contrato: a inferência vê uma amostra, então um campo que por acaso é null no seu exemplo é tipado como null, e campos opcionais que estavam ausentes simplesmente não existem para ela. A saída é deliberadamente simples — sem decorators, sem validação em runtime — para você colar em qualquer lugar e refinar.
Para campos que variam entre requisições, passe uma segunda amostra e mescle na mão, ou gradue para ferramentas schema-first (OpenAPI, zod) quando a forma estabilizar. Para o momento cotidiano de "só preciso de um tipo para esta resposta", uma colada basta.
Perguntas frequentes
- Por que meu campo anulável é tipado só como null?
- A inferência vê apenas a amostra que você colou. Se o campo estava null ali, null é tudo que ela pode saber. Mude para string | null (ou seja lá qual for o tipo real) depois da geração — ou cole uma amostra em que o campo esteja preenchido.
- Como campos opcionais são tratados?
- Eles não são detectados — uma única amostra não distingue "sempre presente" de "presente desta vez". Campos ausentes da amostra ficam ausentes do tipo. Marque campos como opcionais (name?:) manualmente onde você sabe que a API os omite.
- O que arrays de tipos mistos produzem?
- Uma union: [1, "a"] infere (number | string)[]. Arrays vazios inferem unknown[], já que não há elemento para inspecionar — substitua pelo tipo real de elemento quando o conhecer.
- Devo usar tipos inferidos ou uma biblioteca de schema como zod?
- Interfaces inferidas são apenas de tempo de compilação — não validam nada em runtime. Para ferramentas internas e tipagem rápida elas são perfeitas; para entrada não confiável em runtime, defina um schema zod/valibot e derive o tipo estático dele.