Saltar para o conteúdo
4all.tools

Gere tipos TypeScript a partir de exemplos JSON completos

Infira tipos TypeScript de documentos JSON completos, preserve chaves literais e diferencie campos ausentes de null localmente.

Espaço de trabalho da ferramenta

JSON para TypeScript

Declarações exportadas de tipos TypeScript.

Os tipos descrevem os exemplos; não validam dados em runtime. Números JavaScript podem aproximar inteiros grandes.

Ative JavaScript para gerar código. Você pode ler e editar o JSON.

Todos os elementos e documentos contribuem para o mesmo contrato. Um array na raiz continua sendo um array. Ausência de campo é diferente de null.

Até 20 documentos, 1.000.000 de unidades UTF-16 de entrada e 2.000.000 de saída; outros limites de recursos também se aplicam.

Seu JSON é processado localmente em um Worker do navegador. Não é enviado nem armazenado.

Use entre 1 e 64 letras e dígitos ASCII, começando por uma letra. Nomes reservados são rejeitados.

Pronto para inserir JSON.

    Um documento ou vários exemplos completos

    Cole JSON estrito ou carregue um arquivo local UTF-8. Escolha um documento ou adicione até vinte documentos completos do mesmo contrato. Todos devem ser válidos; exemplos vazios, chaves duplicadas, comentários e documentos concatenados interrompem a operação. Gere por ação explícita. Todos os elementos contribuem, incluindo os últimos de um array. Um array na raiz continua sendo um array.

    O editor mostra o exemplo ativo e o total. Após gerar, confira o nome do arquivo, a expressão do tipo raiz, a quantidade de nós JSON e o tamanho do código completo. Esses dados descrevem o resultado atual; copiar e baixar incluem todo o arquivo mesmo quando a prévia está limitada.

    [{"id":1},{"id":2,"nombre":"Ana"}]
    export type RootItem = {
      "id": number;
      "nombre"?: string;
    };
    
    export type Root = Array<RootItem>;

    Ausência, null e chaves literais

    ? indica ausência observada entre objetos do mesmo contexto. Null é outro tipo: [{"x":null},{"x":"a"},{}] produz um campo opcional null | string. Presença observada não comprova uma regra da API. Objetos em propriedades diferentes mantêm contextos próprios. Toda chave usa um literal entre aspas: class, __proto__, chaves vazias, aspas e Unicode são preservados. Apenas nomes de tipos de código são ajustados para colisões.

    Arrays mistos preservam todos os ramos. [] produz Array<unknown> com aviso; {} usa Record<string, unknown> por falta de campos observados. Não há inferência de datas, enums, tuples, discriminantes, validadores runtime ou lógica de negócio. As declarações exportadas aceitam strict e exactOptionalPropertyTypes do TypeScript; não validam dados em runtime.

    Números, limites e exportação completa

    Números continuam sendo number. A evidência usa lexemas originais; avisos de precisão JavaScript permanecem visíveis. O destino avisa quando inteiros grandes ou perda de precisão podem causar aproximação. Nunca altera números silenciosamente para strings ou bigint.

    O perfil permite 20 exemplos, 1.000.000 de unidades UTF-16 de entrada, 4.000.000 de bytes UTF-8 de entrada e por arquivo, profundidade 200 e 100.000 nós de origem agregados. A análise tem 1.000.000 de unidades de trabalho compartilhadas; a inferência tem 100.000 visitas, 10.000 tipos, 20.000 campos distintos e 2.000.000 de unidades de fusão. A emissão permite 2.000 declarações e 4.000.000 de unidades de trabalho. A saída aceita 2.000.000 de unidades UTF-16 e 8.000.000 de bytes. Os máximos nem sempre podem ser atingidos juntos. A geração expira após 15 segundos e falhas não publicam código parcial.

    A prévia mostra até 20.000 unidades UTF-16. Copiar e baixar exportam o types.ts completo e atual, como text/plain;charset=utf-8, UTF-8 sem BOM, LF e uma quebra final. São mostrados até 100 diagnósticos e 50 linhas de nomes com 10.000 unidades agregadas, indicando omissões. Se a área de transferência for negada, abra explicitamente o código completo para copiar. Um BOM inicial é removido para análise; posições referem-se ao texto original visível. Cancelar termina o Worker e preserva a entrada. Editar exemplos, ordem, modo ou nome raiz invalida a saída e as ações.

    O processamento é local em um Worker do navegador, sem envios, armazenamento, compiladores remotos ou dados nos links. JavaScript e Worker local são necessários. A página nunca compila nem executa o código gerado.