JSON para interfaces TypeScript

Cole um exemplo JSON de uma resposta de API ou de um arquivo de configurações. A ferramenta escreve interfaces TypeScript que o descrevem, com um nome para cada objeto aninhado. Nada do que você cola sai do seu navegador.

Gratuita Funciona no seu navegador Verificada em terça-feira, 10 de novembro de 2026

Um objeto ou array JSON típico. Vários itens de um array são unidos em uma só interface.

Um nome simples, como Root, Product ou ApiResponse.

Marque se os tipos forem importados em outro arquivo.

Resultado

Interfaces TypeScript — Copie o código, ou baixe-o como types.ts.
Declarações — As interfaces e os aliases de tipo do código.
Interfaces TypeScript

Esta ferramenta funciona no seu navegador. O que você digita não é enviado para nós.

Como usar

  1. Cole um valor JSON típico em Exemplo JSON. Os tipos aparecem enquanto você digita.
  2. Digite um nome em Nome da interface raiz para o objeto mais externo, como Product.
  3. Desmarque Escrever export antes de cada declaração se os tipos ficarem no mesmo arquivo.
  4. Copie as Interfaces TypeScript, ou baixe-as como types.ts.

Como os tipos são obtidos

Cada objeto JSON vira uma interface. Seu nome vem da chave que o contém, em PascalCase: a chave first-name gera FirstName. Os itens de um array tomam o singular da chave do array, então items gera Item. Quando um nome já está em uso, o nome do pai é colocado na frente dele.

Textos, números e booleanos viram string, number e boolean. null é escrito como null em uma união, como number | null. Um array de valores vira um tipo seguido de []; um array vazio vira unknown[], porque o exemplo não diz o que ele contém.

chave "first-name" -> propriedade "first-name": string;   items -> Item[]

Vários exemplos em um array

Uma lista de objetos é lida como uma forma só. Uma chave que aparece em todos os itens é obrigatória; uma chave que falta em alguns itens é escrita com ponto de interrogação, como opcional. Uma chave que guarda tipos diferentes em itens diferentes vira uma união, com string primeiro, depois number, boolean, a interface, o array e null.

Um exemplo mostra só os valores que contém. Uma chave que uma API real às vezes deixa de fora pode faltar em um único exemplo, então acrescente um segundo item com ela se precisar que o tipo a mostre como opcional.

Exemplo resolvido: o exemplo padrão

O exemplo padrão é um objeto com cinco chaves. A chave owner guarda um objeto, então o código tem uma interface Owner. A chave items é um array de dois objetos, então o código tem uma interface Item. As chaves sku e price estão nos dois itens e são obrigatórias; a chave discount é null em um item e um número no outro, então é number | null; a chave note aparece em um só item e é opcional.

O resultado tem três declarações: Root, Owner e Item, e a contagem mostra 3.

Perguntas frequentes

Por que um campo é marcado com ponto de interrogação?

O campo falta em pelo menos um objeto do exemplo. Um campo assim pode estar ausente nos dados reais, então o TypeScript o trata como opcional, e o código que o lê deve verificá-lo antes.

Por que meu campo mostra uma união como string | number?

Itens diferentes guardam tipos diferentes para essa chave. O tipo lista todos os tipos vistos no exemplo, então o código deve verificar qual deles tem antes de usar o valor.

A ferramenta verifica meus dados reais da API?

Não. Ela escreve os tipos do exemplo que você cola. Um exemplo com um item não consegue mostrar um campo que aparece só depois, então use uma resposta típica com vários itens quando puder.

Por que alguns nomes de propriedade estão entre aspas?

Um nome que não é um identificador simples, como first-name ou 2fa, precisa de aspas no TypeScript. Os nomes que são identificadores válidos são escritos sem aspas.

Posso usar a saída com JavaScript?

As interfaces são só TypeScript. Elas são removidas quando o código é compilado, então um projeto JavaScript precisa verificar o JSON de outro modo, ou usar uma etapa de build do TypeScript.

Fontes

Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.

Usamos cookies necessários para o site funcionar. Com o seu consentimento, o Google também usa cookies de publicidade para mostrar anúncios personalizados. Se você recusá-los, continuará vendo anúncios, mas eles não serão personalizados.