OpenReplay Logo
12k
12k

Conversor de JSON para TypeScript

Converta JSON em interfaces ou tipos TypeScript limpos — objetos aninhados viram interfaces nomeadas e sem duplicação, processado localmente no seu navegador.

Saída
Processado localmente

Sobre esta ferramenta

Um conversor de JSON para TypeScript lê um documento JSON e infere um tipo estático para ele: escalares mapeiam para string, number e boolean; arrays viram T[]; e objetos aninhados são extraídos para suas próprias interfaces nomeadas em vez de ficarem embutidos. Esta ferramenta percorre toda a árvore de valores, mescla as chaves de cada objeto em um array (marcando como opcionais as chaves ausentes em alguns elementos), elimina a duplicação de objetos com formas idênticas para que reutilizem uma única interface, e coloca entre aspas qualquer nome de propriedade que não seja um identificador válido. Valores null entram em união com o tipo do vizinho quando um é encontrado, arrays vazios viram unknown[], e objetos vazios viram Record<string, unknown>.

Use-o para transformar uma resposta de API em modelos tipados sem escrevê-los à mão, para gerar interfaces a partir de um arquivo de fixture ou de configuração, ou para verificar qual forma um payload realmente tem antes de integrá-lo ao seu código. Renomeie o tipo raiz, alterne entre a saída interface e type para corresponder às convenções da sua base de código, e o resultado é regerado ao vivo conforme você cola ou edita — depois copie-o diretamente para um arquivo .d.ts ou de modelo.

Os tipos gerados refletem apenas a amostra que você cola — campos que por acaso estejam ausentes ou null no seu exemplo ainda podem aparecer nos dados reais, então revise os opcionais e as uniões com null antes de confiar neles.

Perguntas frequentes

Ele gera interfaces ou aliases de tipo do TypeScript?

Ambos. O padrão é interface, ideal para modelos de objeto que você talvez queira estender ou mesclar; alterne para a opção type para emitir aliases de tipo, que podem expressar uniões e tuplas que as interfaces não conseguem.

Como ele lida com um array de objetos com chaves diferentes?

Ele mescla as chaves de cada elemento em uma única interface. Qualquer chave que esteja ausente em pelo menos um elemento é marcada como opcional com um ?, de modo que o tipo gerado descreve com segurança todos os elementos do array.

Por que dois objetos aninhados compartilham o mesmo nome de interface?

Objetos com um conjunto idêntico de campos e tipos de campos têm sua duplicação eliminada em uma única interface nomeada e são reutilizados, o que mantém a saída compacta e evita definições duplicadas quase idênticas.