100 % local: tus datos nunca salen de tu navegador

JSON a PropTypes — una prop mal formada avisa

Convierte una muestra JSON en shapes de PropTypes. Una shape por objeto, requerida por defecto: una prop mal formada aparece en la consola de desarrollo.

Instantáneo Privado Cero cookies

Entrada JSON

Salida PropTypes

Qué hace esta herramienta

Una muestra JSON pasa a ser formas de PropTypes, un const por objeto.

{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
import PropTypes from 'prop-types';

export const AddressShape = PropTypes.shape({
  city: PropTypes.string.isRequired,
});

export const RootShape = PropTypes.shape({
  id: PropTypes.number.isRequired,
  name: PropTypes.string.isRequired,
  address: AddressShape.isRequired,
});

Los hijos primero: son valores de ejecución, una forma debe existir antes de que otra se refiera a ella. Un array en la raíz recibe su propio const, PropTypes.arrayOf(UsersItemShape).

Obligatorio quiere decir «estaba ahí»

Cada clave de la muestra sale con .isRequired, porque la muestra la traía. Es una afirmación comprobable y, donde sea falsa, se deshace con un borrado. La alternativa —marcarlo todo opcional— afirmaría algo sobre datos que nadie enseñó, y dejaría el control inútil justo donde importa.

Dos casos quedan blandos: un null y un valor desconocido dan ambos PropTypes.any sin .isRequired. Un null te dice que la clave existe y nada de su tipo: exigirlo afirmaría más de lo que la muestra sostiene.

Solo en desarrollo, y asumido

Los avisos de PropTypes aparecen en desarrollo y se omiten en producción, por diseño. No es un defecto, es el trato: un control en ejecución que no cuesta nada donde costaría más. También significa que una carga malformada que llega a un usuario no produce aviso alguno: PropTypes es una ayuda al desarrollo, no una capa de validación. Para validar en todas partes, el generador Zod de este sitio emite esquemas que sí lo hacen.

React 19 ya no los lee

React 19 quitó la comprobación de propTypes en los componentes: asignar Component.propTypes no tiene ningún efecto, en silencio. El paquete prop-types sigue existiendo y estas formas siguen siendo valores que puedes llamar tú —PropTypes.checkPropTypes(…)—, pero si empiezas hoy sobre un React actual, este generador sirve a las bases existentes más que a las nuevas.

Los límites habituales de una muestra

Un array heterogéneo pasa a PropTypes.oneOfType([...]), exactamente tan ancho como lo que vio. Un array vacío pasa a PropTypes.array, sin decir nada de los elementos. Y una clave que no es un identificador válido conserva sus comillas, cosa que JavaScript acepta sin rechistar.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Sigue funcionando con React 19?
No a través de React. React 19 ignora por completo los `propTypes` de un componente: la comprobación se retiró, no se marcó como obsoleta. El paquete `prop-types` sigue funcionando como validador autónomo que llamas tú, y estas formas siguen siendo JavaScript válido; pero si estás en React 19 y quieres comprobar props, la respuesta es TypeScript.
¿Por qué todo lleva `.isRequired`?
Porque todas las claves estaban en la muestra. Es una afirmación sobre una carga, y `.isRequired` es su traducción honesta: una prop que estaba ahí. Si está siempre no lo dice el documento; quita el `.isRequired` de las que tu componente puede no recibir.
¿Estos controles van en mi paquete de producción?
Los avisos no: React solo ejecutaba las comprobaciones de PropTypes en desarrollo, y la biblioteca sigue la misma convención. Los objetos de forma sí viajan, salvo que tu empaquetador los quite, y es una razón más para que un `PropTypes.shape` que describe una carga grande se mantenga modesto.

Convertidores relacionados