JSON para TypeScript
Transforme um objeto JSON em interfaces TypeScript tipadas.
- Instantânea
- Grátis
- Privada (processada localmente)
- Sem registo
Tipar uma resposta de API em segundos
Em vez de escrever à mão as interfaces de um JSON grande, cole-o aqui. A ferramenta deduz os tipos recursivamente: objetos aninhados transformados em interfaces separadas, arrays tipados, campos opcionais marcados com «?».
-
Cole o JSON
Uma resposta de API, um ficheiro de config, qualquer objeto.
-
Nomeie a raiz
«Root» por defeito, ou o nome à sua escolha.
-
Copie as interfaces
Prontas a colar no seu ficheiro .ts.
Exemplo de inferência
| Valor JSON | Tipo deduzido |
|---|---|
| "name": "Ada" | name: string |
| "age": 36 | age: number |
| "roles": ["admin"] | roles: string[] |
| "profile": { … } | profile: Profile |
| (chave ausente de um objeto de um array) | campo?: tipo |
Inferência a partir de um exemplo: lembre-se de refinar os null (muitas vezes numa união string | null) e verificar os tipos depois. Tudo acontece localmente, o seu JSON nunca sai do navegador.
Perguntas frequentes
Como são deduzidos os tipos?
A ferramenta examina cada valor: um número passa a number, uma string a string, um booleano a boolean. Os objetos tornam-se interfaces nomeadas pela sua chave, e os arrays são tipados pelos seus elementos (string[], MeuTipo[]…).
Como são detetados os campos opcionais?
Quando um array contém vários objetos, a ferramenta funde as suas chaves. Uma chave presente em alguns objetos mas não em todos é marcada opcional com «?». É exatamente o comportamento esperado para dados de API heterogéneos.
O que acontece com valores null ou arrays vazios?
Um valor null é tipado null (a refinar manualmente, muitas vezes numa união como string | null). Um array vazio passa a unknown[], pois o tipo do elemento não pode ser determinado a partir de um único exemplo.
O resultado está pronto a colar no meu código?
Sim: a interface raiz é nomeada à sua escolha («Root» por defeito), as subinterfaces são declaradas acima, e a sintaxe é TypeScript válido. Renomeie as interfaces conforme o seu domínio para maior clareza.