Tipos TypeScript desde JSON

Muestra JSON a interfaces TypeScript, Zod, JSON Schema, structs Go o Python.

These options apply to TypeScript.

Output

4 named types · 28 lines

Qué hace

Pega una muestra JSON, por ejemplo una respuesta copiada del panel de red del navegador, y obtén los tipos que implica en cinco formatos: TypeScript (interface o type), Zod con z.infer, JSON Schema 2020-12, structs de Go con etiquetas json y dataclasses de Python. Todo se procesa en tu navegador con el mismo analizador estricto del formateador JSON, que indica línea y columna de cada error.

Cómo se infieren los tipos

Los objetos se convierten en tipos con nombre tomado de la clave (items → Item, en singular para los elementos de un array). Los elementos de un array se fusionan en un solo tipo: un campo que falta en algunos elementos pasa a ser opcional, y tipos distintos forman una unión, así [1, "a", null] es (string | number | null)[]. Un array vacío es unknown[] y un objeto vacío Record<string, unknown>. Enteros y decimales son number en TypeScript, pero int64/float64 en Go e int/float en Python. Las claves que no son identificadores se escriben entre comillas.

Límites

Una muestra solo refleja una respuesta. Un estado es string, no la unión de sus valores; una fecha es un texto. Pega varios registros dentro de un array para fusionarlos y ajusta el resultado a mano. Para datos que llegan por la red, el esquema Zod los valida en tiempo de ejecución.

Preguntas frecuentes

¿Por qué un campo es null y no string | null?

Porque en todas tus muestras era null. Añade un registro donde tenga valor, dentro del mismo array, y se fusionará como string | null.

¿Se sube mi JSON a algún servidor?

No. El análisis y la generación de código se hacen en tu navegador.

¿Por qué la clave date se convierte en DateType?

Una interface llamada Date se fusionaría con el tipo Date integrado. Los nombres integrados reciben el sufijo Type para evitarlo.