onlinetools.dev

JSON → tipos TypeScript

Infira interfaces TypeScript de um exemplo JSON instantaneamente

Roda localmente
loading…
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.
Ferramentas relacionadas