Conversor de JSON para tipos TypeScript
Cole um objeto JSON (ou um array JSON) para gerar automaticamente as interfaces/tipos TypeScript correspondentes.
Dicas de uso
- Quando todos os elementos de um array são objetos, suas chaves são combinadas em uma única interface. Chaves ausentes em alguns elementos são automaticamente tratadas como opcionais (`?`).
- O nome do tipo raiz é "Root" por padrão, mas pode ser alterado para o que preferir (por exemplo, `User`, `ApiResponse`). Os nomes de interface dos objetos aninhados são gerados automaticamente a partir do nome da propriedade correspondente.
- Cole diretamente um JSON de exemplo da resposta da sua API para obter rapidamente um rascunho dos tipos usados na implementação do frontend.
- O resultado gerado é apenas um rascunho inferido a partir da estrutura. Recomenda-se revisá-lo manualmente com base na especificação real da API (campos nullable, obrigatórios etc.) antes de usar.
Perguntas frequentes
Curiosidade — O problema da "defasagem de tipos" que as ferramentas de inferência resolvem
TypeScript é uma linguagem que permite detectar erros em tempo de compilação graças à tipagem estática, mas o compilador não tem como saber a forma dos dados JSON vindos de uma API externa, a menos que um desenvolvedor a defina manualmente. Toda vez que a especificação da API e a resposta de exemplo divergem, ou campos são adicionados ou removidos, é preciso atualizar as definições de tipos manualmente — e essa distância entre "o que os tipos dizem" e "o que a API realmente retorna" tem sido uma dor de cabeça recorrente em muitos projetos frontend.
Uma ferramenta de conversão de JSON para TypeScript resolve isso deduzindo os tipos mecanicamente a partir de uma resposta JSON de exemplo real, o que agiliza bastante esse trabalho. Uma ferramenta bem conhecida nessa área é o quicktype, um projeto de código aberto capaz de gerar definições de tipos para várias linguagens, conhecido por suportar diversos formatos de entrada, incluindo JSON Schema e esquemas GraphQL.
A dificuldade da inferência de tipos está no fato de que o próprio JSON não contém informações sobre se um campo está sempre presente ou se pode se tornar null no futuro. Por isso, as definições geradas automaticamente nunca são uma solução completa: a prática recomendada é tratá-las como um rascunho que reflete apenas a estrutura desta amostra específica, conferindo e ajustando de acordo com a especificação real da API.