JSON para interfaces TypeScript
Gere interfaces ou type aliases TypeScript a partir de um exemplo JSON, com chaves opcionais, uniões com null e tipos aninhados inferidos de arrays. Grátis e privado.
Chaves ausentes em alguns itens do array ficam opcionais (?), valores null viram "| null" e valores que são sempre null viram unknown.
Executa totalmente no seu navegador. Seus dados nunca são enviados.
Ferramentas Relacionadas
Ver TodasO que é JSON para TypeScript?
Cole uma resposta de API ou um exemplo de configuração e receba declarações TypeScript interface (ou type) prontas para usar. Objetos aninhados viram tipos exportados separados, chaves ausentes em alguns itens de um array viram opcionais e valores null viram tipos de união.
Como usar JSON para TypeScript
- Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
- Defina o Nome do tipo raiz (padrão
Root). - Escolha o Estilo de saída:
interfaceou alias type. - Copie o código TypeScript gerado ou clique em Baixar para salvá-lo como arquivo.
Exemplo
{"id":1,"name":"A","tags":["x"]} export interface Root {
id: number;
name: string;
tags: string[];
} Quando usar JSON para TypeScript
Use-o para tipar rapidamente respostas de fetch, fixtures ou arquivos de configuração. Um único exemplo não revela todos os casos: enums de string, uniões de formatos de objeto ou strings de data continuam como string/tipos mesclados, então revise e refine o resultado, ou use um gerador baseado em JSON Schema para contratos.
Como funciona JSON para TypeScript
O exemplo é percorrido recursivamente e cada posição acumula os tipos que encontrou. Arrays de objetos são mesclados em um único tipo: uma chave ausente em alguns elementos vira opcional, uma chave que é null em algum lugar vira anulável, inteiros misturados com decimais viram um tipo de ponto flutuante e qualquer outra mistura de tipos recai em um tipo dinâmico. Objetos aninhados viram tipos nomeados próprios (PascalCase da chave, com chaves de array no singular: orders → Order), com sufixos numéricos quando os nomes colidem. A saída TypeScript mapeia inteiros e decimais para number, strings para string, booleanos para boolean, arrays para T[], valores anuláveis para T | null e valores dinâmicos para unknown. Chaves que não são identificadores válidos ficam entre aspas ("first-name": string).
Casos de Uso Comuns
- Tipar a resposta de uma API REST antes de escrever um cliente
- Criar interfaces para um arquivo de configuração JSON
- Converter fixtures de teste em objetos tipados
- Criar os tipos iniciais do payload de um webhook de terceiros
Perguntas Frequentes
Por que uma propriedade foi tipada como unknown?
O valor dela era null em todos os exemplos (ou os arrays estavam vazios), então nenhum tipo real pôde ser inferido. Acrescente um exemplo com um valor real ou edite o tipo à mão.
Como as propriedades opcionais são detectadas?
Quando o valor de nível superior ou uma chave aninhada é um array de objetos, uma chave presente em apenas alguns dos objetos recebe ?.
Ele gera validação em tempo de execução?
Não, ele só emite declarações de tipo, que somem na compilação. Use um validador como um JSON Schema se precisar de verificações em tempo de execução.