Saltar al contenido
4all.tools

Genera tipos TypeScript desde ejemplos JSON completos

Infiere tipos TypeScript desde documentos JSON completos, conserva claves literales y distingue ausencia de null localmente.

Espacio de trabajo de la herramienta

JSON a TypeScript

Declaraciones exportadas de tipos TypeScript.

Los tipos describen los ejemplos; no validan datos en runtime. Los números de JavaScript pueden aproximar enteros grandes.

Activa JavaScript para generar código. Puedes leer y editar el JSON.

Todos los elementos y documentos aportan al mismo contrato. Un array raíz sigue siendo un array. La ausencia de un campo es distinta de null.

Hasta 20 documentos, 1.000.000 de unidades UTF-16 de entrada y 2.000.000 de salida; también se aplican otros presupuestos de recursos.

Tu JSON se procesa localmente en un Worker del navegador. No se envía ni se guarda.

Usa entre 1 y 64 letras y dígitos ASCII; comienza por una letra. Los nombres reservados se rechazan.

Listo para introducir JSON.

    Un documento o varios ejemplos completos

    Pega JSON estricto o carga un archivo local UTF-8. Selecciona un documento o añade hasta veinte documentos completos del mismo contrato. Cada ejemplo debe ser válido; vacíos, claves duplicadas, comentarios y documentos concatenados detienen la operación. Genera por acción explícita. Todos los elementos cuentan, incluidos los últimos de un array. Un array raíz sigue siendo un array.

    El editor muestra el ejemplo activo y el total. Después de generar, revisa el nombre del archivo, la expresión del tipo raíz, los nodos JSON y el tamaño del código completo. Estos datos describen el resultado vigente; copiar y descargar incluyen todo el archivo aunque la vista previa esté acotada.

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

    Ausencia, null y claves exactas

    ? indica ausencia observada entre objetos del mismo contexto. Null es otro tipo: [{"x":null},{"x":"a"},{}] produce un campo opcional null | string. La presencia no demuestra requisitos de una API. Objetos de propiedades distintas conservan contextos propios. Cada clave usa un literal entre comillas: class, __proto__, claves vacías, comillas y Unicode se conservan. Sólo se ajustan nombres de tipos de código por colisión.

    Los arrays mixtos conservan sus ramas. [] produce Array<unknown> con aviso; {} usa Record<string, unknown> por falta de campos observados. No se infieren fechas, enums, tuples, discriminantes, validadores runtime ni lógica de negocio. Las declaraciones exportadas admiten strict y exactOptionalPropertyTypes de TypeScript; no validan datos en runtime.

    Números, límites y exportación completa

    Los números siguen siendo number. La evidencia usa lexemas originales; los avisos de precisión JavaScript siguen visibles. El destino avisa cuando enteros grandes o pérdida de precisión pueden provocar aproximaciones. Nunca cambia números a strings o bigint silenciosamente.

    El perfil permite 20 muestras, 1.000.000 de unidades UTF-16 de entrada, 4.000.000 de bytes UTF-8 de entrada y por archivo, profundidad 200 y 100.000 nodos fuente agregados. El parseo dispone de 1.000.000 de unidades de trabajo compartidas; la inferencia, de 100.000 visitas, 10.000 tipos, 20.000 campos distintos y 2.000.000 de unidades de fusión. La emisión permite 2.000 declaraciones y 4.000.000 de unidades de trabajo. La salida admite 2.000.000 de unidades UTF-16 y 8.000.000 de bytes. Los máximos no necesariamente se alcanzan juntos. La generación vence a los 15 segundos y un fallo no publica código parcial.

    La vista previa muestra hasta 20.000 unidades UTF-16. Copiar y descargar exportan el types.ts completo vigente como text/plain;charset=utf-8, UTF-8 sin BOM, LF y un salto final. Se muestran hasta 100 diagnósticos y 50 filas de nombres con 10.000 unidades agregadas, indicando omisiones. Si se deniega el portapapeles, puedes abrir explícitamente el código completo para copiarlo. Se retira un BOM inicial para parsear; las posiciones se refieren al texto original visible. Cancelar termina el Worker y conserva la entrada. Editar muestras, orden, modo o nombre raíz invalida la salida y sus acciones.

    El procesamiento es local en un Worker del navegador, sin envíos, almacenamiento, compiladores remotos ni datos en enlaces. Requiere JavaScript y Worker local. La página nunca compila ni ejecuta el código generado.