Herramienta Gratis Activo

Flow

Para detectar errores de tipos en JavaScript en tiempo de compilación antes de ejecutar el código.

Comprobador de tipos estático para JavaScript creado por Meta: añade anotaciones de tipo sin renunciar a JS

Notas y contexto

Qué es

Flow es un comprobador de tipos estático para JavaScript desarrollado por Meta. Permite añadir anotaciones de tipo a un dialecto de JavaScript y analiza el código sin ejecutarlo para detectar errores antes de que lleguen a producción. Está escrito en OCaml (con una parte portada a Rust para compilar a WebAssembly) y se usa internamente en Meta sobre millones de archivos. Apareció en 2014 como respuesta de Facebook al mismo problema que TypeScript resuelve, y ambos comparten hoy gran parte de la sintaxis de tipos.

Para qué sirve

  • Detectar errores de tipos (valores nulos, propiedades inexistentes, argumentos incorrectos) en tiempo de análisis, sin ejecutar el programa.
  • Anotar código JavaScript existente de forma gradual, archivo a archivo, marcándolos con // @flow.
  • Tipar componentes de React con sintaxis dedicada (component, renders) y reglas de composición verificadas en compilación.
  • Aprovechar características avanzadas del sistema de tipos como pattern matching exhaustivo, tipos condicionales y mapeados.

Cuándo usarlo

Encaja en bases de código JavaScript de gran escala, especialmente en proyectos del ecosistema de Meta (React, React Native) que ya dependen de Flow. Conviene tener en cuenta que hoy TypeScript domina con claridad el tipado de JavaScript: tiene mucha más adopción, ecosistema de tipos (@types/*) y soporte de herramientas. Para un proyecto nuevo sin vínculo con Meta, lo habitual es elegir TypeScript salvo que ya exista una inversión previa en Flow.

Ejemplo

Instalar Flow en un proyecto y comprobar los tipos:

npm install --save-dev flow-bin
npx flow init
npx flow

Un archivo anotado se marca con el pragma // @flow:

// @flow
function saludar(nombre: string): string {
  return "Hola, " + nombre;
}

saludar(42); // Flow marca error: number no es asignable a string

Flow solo analiza los archivos que incluyen // @flow, por lo que la adopción puede ser incremental.

Puntos clave

  • Análisis estático rápido e incremental mediante un servidor en segundo plano que mantiene el estado del proyecto.
  • Objetos exactos por defecto: detecta propiedades sobrantes que TypeScript permitiría.
  • Rechaza patrones inseguros, como la extracción de métodos sin enlazar, que podrían fallar en tiempo de ejecución.
  • Sintaxis específica para React y expresiones match con comprobación de exhaustividad.
  • Proyecto open source con licencia MIT y desarrollo activo.

Ten en cuenta

Flow está activamente mantenido por Meta (última versión v0.320.0, junio de 2026), pero su cuota de uso es minoritaria frente a TypeScript, que se ha convertido en el estándar de facto para el tipado de JavaScript. La oferta de tipos de terceros para Flow (flow-typed) es mucho menor que la de @types, y muchas librerías solo publican definiciones para TypeScript. Para equipos sin dependencia previa de Flow, migrar o empezar con TypeScript suele ser la opción más práctica.

Volver al directorio
Volver al directorio