100 % local: tus datos nunca salen de tu navegador

JSON a Flow — alias de tipos para tu proyecto

Convierte una muestra JSON en alias de tipos Flow. Los objetos anidados reciben su nombre: un payload pasa a ser tipos que importas donde hagan falta.

Instantáneo Privado Cero cookies

Entrada JSON

Salida Flow

Qué hace esta herramienta

Una muestra JSON pasa a ser alias de tipos de Flow, uno por objeto.

{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
export type Root = {
  id: number,
  name: string,
  address: Address,
};

export type Address = {
  city: string,
};

Una lista en la raíz también recibe nombre:

export type Users = UsersItem[];

Ese alias faltaba: el tipo del elemento salía solo, y el nombre raíz que habías puesto no iba a ninguna parte. Se encontró al escribir esta página y se corrigió.

La exactitud no nos toca a nosotros

La salida escribe { … }, ni {| … |} ni un ... final. Con exact_by_default=true, que las versiones recientes de Flow activan, ese objeto es exacto: una propiedad de más es un error. Sin la bandera es inexacto y las propiedades de más se admiten.

Ambas posturas se defienden, y la diferencia es una decisión de proyecto anotada en tu .flowconfig. Escribir el signo en un sentido u otro impondría esa decisión en nombre de una muestra que no dice nada al respecto: el tipo generado sigue simplemente tu configuración.

mixed, no any

Un array vacío da mixed[]; un valor de forma desconocida da mixed. La gracia de mixed es que Flow te obliga a estrecharlo antes de usarlo, que es lo que quieres cuando el tipo es de verdad desconocido. any quedaría más limpio en la salida y apagaría el verificador justo donde el dato se entiende menos.

Lo que un documento no puede decir

Nada es opcional: name: string significa presente, porque la muestra lo traía. Si el campo falta a veces, el retoque es name?: string, y string | null si puede ser nulo: la muestra solo prueba lo que contiene.

Un array heterogéneo pasa a unión, (number | string)[], que describe la muestra con precisión y quizá sea más ancha o más estrecha que tus datos reales. Y una clave que no es un identificador válido conserva sus comillas: "content-type": string.

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

¿Los objetos generados son exactos o inexactos?
No se escribe ni lo uno ni lo otro: la salida usa `{ … }` tal cual, así que decide tu `.flowconfig`. Con `exact_by_default=true` —el ajuste que traen las versiones recientes de Flow— esos objetos son exactos; sin él, inexactos. Escribir `{| |}` o un `...` final impondría una decisión de proyecto que la muestra desconoce.
¿Por qué `mixed` y no `any`?
Porque `mixed` es el honesto. Un array vacío no dice nada de sus elementos, y `mixed` dice justo eso a la vez que te obliga a afinar antes de usarlo. `any` diría lo mismo y luego dejaría pasar todos los errores en silencio: un tipo desconocido no es razón para apagar el verificador.
¿Conviene empezar hoy un proyecto en Flow?
Es tu decisión, y la herramienta sirve en ambos casos. Flow sigue vivo y en uso, sobre todo en bases anteriores al auge de TypeScript o cercanas al ecosistema de Meta. Si eliges hoy sin esa atadura, TypeScript tiene la mayor biblioteca de definiciones —y este sitio también convierte a él.

Convertidores relacionados