Cómo se usa
- Pegue un valor JSON típico en Muestra JSON. Los tipos aparecen mientras escribe.
- Escriba un nombre en Nombre de la interfaz raíz para el objeto más externo, como Product.
- Desmarque Escribir export antes de cada declaración si los tipos se quedan en el mismo archivo.
- Copie las Interfaces de TypeScript, o descárguelas como types.ts.
Cómo se obtienen los tipos
Cada objeto JSON se convierte en una interfaz. Su nombre sale de la clave que lo contiene, en PascalCase: la clave first-name da FirstName. Los elementos de un array toman el singular de la clave del array, así que items da Item. Cuando un nombre ya está usado, se pone delante el nombre del padre.
Las cadenas, los números y los booleanos pasan a string, number y boolean. null se escribe como null dentro de una unión, como number | null. Un array de valores pasa a un tipo seguido de []; un array vacío pasa a unknown[], porque la muestra no dice qué contiene.
clave "first-name" -> propiedad "first-name": string; items -> Item[]
Varias muestras en un array
Una lista de objetos se lee como una sola forma. Una clave que aparece en todos los elementos es obligatoria; una clave que falta en algunos elementos se escribe con un signo de interrogación, como opcional. Una clave que tiene tipos distintos en distintos elementos pasa a ser una unión, con string primero, después number, boolean, la interfaz, el array y null.
Una muestra muestra solo los valores que contiene. Una clave que una API real a veces omite puede faltar en un solo ejemplo, así que añada un segundo elemento con ella si necesita que el tipo la muestre como opcional.
Ejemplo resuelto: la muestra por defecto
La muestra por defecto es un objeto con cinco claves. Su clave owner contiene un objeto, así que el código tiene una interfaz Owner. Su clave items es un array de dos objetos, así que el código tiene una interfaz Item. Las claves sku y price están en los dos elementos y son obligatorias; la clave discount es null en un elemento y un número en el otro, así que es number | null; la clave note aparece solo en un elemento y es opcional.
El resultado tiene tres declaraciones: Root, Owner e Item, y el recuento muestra 3.
Preguntas frecuentes
¿Por qué un campo lleva un signo de interrogación?
El campo falta en al menos un objeto de la muestra. Ese campo puede faltar en los datos reales, así que TypeScript lo trata como opcional, y el código que lo lee debe comprobarlo antes.
¿Por qué mi campo muestra una unión como string | number?
Elementos distintos tienen tipos distintos para esa clave. El tipo enumera todos los tipos vistos en la muestra, así que el código debe comprobar cuál tiene antes de usar el valor.
¿La herramienta comprueba mis datos reales de la API?
No. Escribe los tipos de la muestra que pega. Una muestra con un solo elemento no puede mostrar un campo que aparece solo más tarde, así que use una respuesta típica con varios elementos cuando pueda.
¿Por qué algunos nombres de propiedad van entre comillas?
Un nombre que no es un identificador sencillo, como first-name o 2fa, debe ir entre comillas en TypeScript. Los nombres que son identificadores válidos se escriben sin comillas.
¿Puedo usar el resultado con JavaScript?
Las interfaces son solo de TypeScript. Se eliminan al compilar el código, así que un proyecto de JavaScript necesita comprobar el JSON de otra forma, o un paso de compilación de TypeScript.
Fuentes
- Manual de TypeScript (en inglés): tipos de objeto, interfaces y propiedades opcionales
- RFC 8259 (en inglés): The JavaScript Object Notation (JSON) Data Interchange Format
Cifras y texto revisados por última vez el martes, 10 de noviembre de 2026.