
« En particulier, le typage statique offre des avantages comme le contrôle rapide d'erreur - qui vous permet d'éviter certains types de défaillances d'exécution - et les échanges d’informations sur le code, qui facilitent la maintenance du code, la navigation, la transformation et l'optimisation »
En clair, en tant que vérificateur statique, Flow vérifie que lorsqu’un programme est exécuté, ses variables, fonctions et autres éléments du code adhèrent à leurs spécifications d’origine. Il peut vérifier si une valeur affectée à une variable est du correct type, par exemple un nombre au lieu d’une chaîne de caractères. Il peut aussi vérifier si une fonction a passé le nombre correct d’entrées. Ces contrôles d'erreur pourraient prévenir les défaillances du programme, et aider à sécuriser le programme contre de potentiels abus malveillants. La vérification de type peut également aider à effectuer la maintenance du programme.
Il faut rappeler que durant les années antérieures JavaScript a énormément gagné en popularité en tant qu’outil de développement web non seulement pour l’ajout de fonctionnalités aux pages web mais également pour la création d’applications web à grande échelle. Cependant, contrairement à d’autres langages de programmations comme le C++ ou le Java, JavaScript manque de capacités de typage statique. Les ingénieurs Facebook estiment que mettre sur pied un système de typage statique en JavaScript n’est pas une chose évidente en particulier parce que les blocs de construction en JavaScript sont extrêmement expressifs et les systèmes de type simple ne suffisent pas à modéliser précisément leur sémantique.
Il faut se souvenir que d’autres entreprises se sont également lancé dans l’ajout de la vérification de type statique JavaScript à l’instar de Microsoft qui a développé TypeScript, un sur-ensemble typé de JavaScript. Contrairement à TypeScript, Flow permet aux développeurs de ne contrôler que des portions de leur code. Les frameworks JavaScript utilisent parfois certaines techniques, comme la réflexion, qui rendent difficile la vérification de type.
L’exécution de Flow ne contraint pas le développeur à l’exécution du programme ou même à sa préparation pour son inspection. Au lieu de ça, il fonctionne comme un processus d’arrière-plan. Flow est capable de vérifier les types primitifs standards à l’instar des nombres, chaînes de caractère, valeurs booléennes mais également des types structurés comme les fonctions, les tableaux ou même les objets.



Source : Flow Type
Et vous ?
