Ir para o conteúdo
TextArray
Totalmente local

JSON para TypeScript

Gere interfaces TypeScript a partir de um documento JSON, com objetos aninhados como subinterfaces nomeadas.

Entrada

JSON para TypeScript

Cole um documento JSON – uma resposta da API, um arquivo de configuração, uma linha do banco de dados – e obtenha declarações TypeScript prontas para uso. Os tipos são inferidos recursivamente: os primitivos são mapeados para string, número e booleano, os arrays carregam seu tipo de elemento e os arrays mistos tornam-se uniões limpas, como (número | string)[]. Cada objeto aninhado se torna uma subinterface nomeada derivada de sua chave de propriedade em PascalCase, portanto, uma propriedade "user" produz uma interface de usuário que você pode importar e referenciar em qualquer lugar.

Formas idênticas são detectadas e reutilizadas em uma única interface em vez de gerar duplicatas; um sufixo numérico aparece apenas quando dois objetos compartilham um nome de chave, mas diferem em estrutura. Matrizes vazias aparecem como desconhecidos[] e objetos vazios como Record<string, desconhecido> — espaços reservados honestos em vez de suposições. Os nomes de propriedades que não são identificadores válidos são citados automaticamente, de modo que as chaves numéricas e kebab-case permanecem intactas.

As opções cobrem convenções reais de projetos. Nomeie o tipo raiz, escolha entre declarações de interface e tipo, exporte tudo ou nada, marque todas as propriedades como somente leitura e decida como os valores nulos serão tratados — como um tipo nulo explícito ou como propriedades opcionais. JSON inválido produz um erro calmo com a linha e coluna do problema, da mesma forma que o formatador JSON relata.

Tudo é executado localmente no seu navegador: as respostas da API com tokens, registros de usuários ou cargas internas nunca saem da sua máquina. Cole, copie as declarações em sua base de código e o formato dos seus dados será digitado.

FAQ

Como os objetos e matrizes aninhados são digitados?
Objetos aninhados tornam-se subinterfaces nomeadas derivadas de sua chave de propriedade em PascalCase. As matrizes assumem seu tipo de elemento; quando os elementos diferem, o tipo é uma união como (número | string)[]. Uma matriz de objetos do mesmo formato reutiliza uma interface para todos os elementos.
O que acontece com dois objetos da mesma forma?
Eles compartilham uma interface – o gerador compara estruturas e reutiliza o primeiro nome. Um sufixo numérico como Item2 aparece apenas quando duas propriedades têm a mesma chave, mas formatos genuinamente diferentes.
Como os valores nulos são tratados?
Por padrão, uma propriedade nula é digitada como nula, que é exatamente o que o exemplo diz. Ative "Propriedades opcionais para valores nulos" para emitir prop?: desconhecido - útil quando null significa "às vezes ausente" em sua API.
Por que meu array vazio é digitado como desconhecido[]?
Um array vazio não traz nenhuma evidência de seu tipo de elemento, então desconhecido[] é a resposta honesta. Adicione um elemento representativo à amostra e o gerador infere o tipo real.
Meu JSON foi carregado em algum lugar?
Não. A ferramenta é executada inteiramente no seu navegador e seus dados nunca saem do seu dispositivo – seguro para respostas de API que contêm tokens ou dados pessoais.