Programador

JSON para TypeScript

Transforme um objeto JSON em interfaces TypeScript tipadas.

  • Instantânea
  • Grátis
  • Privada (processada localmente)
  • Sem registo

Interfaces TypeScript

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 «?».

  1. Cole o JSON

    Uma resposta de API, um ficheiro de config, qualquer objeto.

  2. Nomeie a raiz

    «Root» por defeito, ou o nome à sua escolha.

  3. Copie as interfaces

    Prontas a colar no seu ficheiro .ts.

Exemplo de inferência

Valor JSONTipo deduzido
"name": "Ada"name: string
"age": 36age: 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.