Conversor de JSON para TypeScript
Cole uma resposta de API e receba interfaces ou type aliases TypeScript prontos para usar, com tipos aninhados, campos opcionais e uniões com null deduzidos para você.
Roda no seu navegadorSem cadastroNada é enviado
Como usar: JSON para TypeScript
- Cole um exemplo de JSON, como uma resposta de API, na caixa da esquerda ou abra um arquivo
.json. - Defina o nome do tipo raiz (por exemplo
UserouApiResponse). - Escolha declarações
interfaceoutypee ativeexport,readonlyou campos todos opcionais. - Escolha
unknown(mais seguro) ouanypara valores que o exemplo não consegue revelar, como arrays vazios e nulls. - Copie o código gerado ou baixe-o como arquivo
.ts.
Como os tipos são deduzidos
- Primitivos: strings, números e booleanos viram
string,numbereboolean. - Objetos aninhados viram interfaces próprias nomeadas em PascalCase, então
billing_addressviraBillingAddress. - Arrays de objetos são mesclados em um único tipo de item, nomeado no singular:
usersgeraUser[]. Uma chave que falta em alguns itens vira opcional (key?:). - Valores null se combinam com os outros valores vistos para aquela chave:
string | null. Uma chave que é semprenullviraunknownouany. - Arrays mistos viram arrays de união, como
(number | string)[]. - Formatos idênticos são declarados uma vez e reutilizados, e formatos diferentes que teriam o mesmo nome recebem um sufixo numérico.
- Chaves que não são identificadores válidos, como
"first-name"ou"2fa", ficam entre aspas.
interface vs. type
Para formatos de objeto simples, os dois são quase intercambiáveis. Declarações interface podem ser estendidas e mescladas, e geram erros de compilação um pouco mais claros. Aliases type também podem expressar uniões e mapped types. Muitas equipes usam interfaces para modelos de API e types para todo o resto; escolha o que o seu código ou linter (@typescript-eslint/consistent-type-definitions) espera.
Tipos melhores a partir do seu exemplo
Os tipos só podem ser tão completos quanto o exemplo. Cole uma resposta que inclua campos opcionais, ou um array com vários itens variados, para que o gerador detecte chaves opcionais e nullable. Valores como datas e enums chegam como strings simples no JSON; refine-os manualmente depois, por exemplo status: 'active' | 'disabled'. Para validação em tempo de execução, combine os tipos gerados com uma biblioteca de schemas como o Zod.
Perguntas frequentes
Meu JSON é enviado para algum lugar?
Como as propriedades opcionais são detectadas?
?. Com um único objeto, todas as chaves são obrigatórias, a menos que você marque Todos opcionais.Devo usar <code>unknown</code> ou <code>any</code>?
unknown é mais seguro: o TypeScript obriga você a refinar o valor antes de usá-lo. any desliga a checagem de tipos para aquele valor. Use-o apenas se pretende refinar os tipos depois.Por que uma data ISO é tipada como <code>string</code>?
new Date() depois do parse, mude a propriedade para Date no seu modelo.