Formateur Flow

Formatez votre code JavaScript avec typage statique Flow.

Flow Source

Formatage

Options

Flow Formaté

Guide Flow

Qu'est-ce que Flow

Flow est un vérificateur de types statiques pour JavaScript créé par Meta (Facebook). Contrairement à TypeScript qui est un langage distinct, Flow ajoute des annotations de type au JavaScript existant. Il est utilisé dans certains projets React, notamment au sein de Meta, mais TypeScript domine désormais le marché.

Syntaxe Flow

// @flow

Directive en haut du fichier pour activer la vérification Flow.

Types annotations

function greet(name: string): string : syntaxe similaire à TypeScript.

type alias

type User = { name: string, age: number } pour définir des types custom.

Opaque types

opaque type ID = string : types opaques pour l'encapsulation.

Flow vs TypeScript

  • Syntaxe : Très similaire, la plupart du code est interchangeable
  • Adoption : TypeScript domine largement aujourd'hui
  • Outillage : TypeScript a un meilleur écosystème IDE
  • Migration : flow-to-ts facilite la conversion vers TypeScript

Questions fréquentes

Flow est-il encore maintenu ?

Oui, Meta continue de développer Flow car il est utilisé dans leur codebase massive. Cependant, l'écosystème et la communauté sont beaucoup plus petits que TypeScript. Pour les nouveaux projets, TypeScript est généralement le meilleur choix.

Comment migrer de Flow vers TypeScript ?

Utilisez l'outil flow-to-ts pour une conversion automatique. La plupart de la syntaxe est compatible. Attention aux différences : $ReadOnly devient Readonly, $Exact n'existe pas en TS. Migrez progressivement fichier par fichier.

Peut-on utiliser Flow avec React moderne ?

Oui, Flow supporte React y compris les hooks et les nouvelles APIs. flow-typed fournit les définitions de types pour React et autres bibliothèques. Cependant, les templates et exemples React modernes utilisent presque tous TypeScript.

Quels sont les avantages de Flow sur TypeScript ?

Flow a quelques features uniques : types opaques (meilleure encapsulation), $Exact pour les objets exacts, meilleure inférence dans certains cas. En pratique, ces avantages sont marginaux face à l'écosystème massif de TypeScript.