1
Flow är en statisk typkontroll för JavaScript som vi byggde på Facebook.Flows övergripande uppgift är att leverera en uppslukande kodupplevelse för JavaScript-utvecklare - en snabb redigeringsuppdateringscykel - även när kodbasen utvecklas och växer.Tekniska termer identifierar vi två konkreta mål som är viktiga för detta uppdrag: precision och hastighet.Dessa mål driver genomgripande design och implementering.Precision JavaScript-buggar kan ha betydande inverkan på Facebook.Utvecklare vill hitta och fixa så många buggar som de kan när deras kod rullas ut till produktion.Så vi måste bry oss om sundhet.Samtidigt måste vi också bry oss om att inte rapportera för många falska fel, eftersom ett lågt signal / brusförhållande innebär en låg fixfrekvens.Med andra ord, vi vill att Flows analys ska vara exakt i praktiken - den måste modellera väsentliga egenskaper hos språket noggrant för att förstå skillnaden mellan idiomatisk kod och oavsiktliga misstag.Hastighetsprecision kommer vanligtvis till kostnaden för hastigheten.Men medan en exakt analys är önskvärd går det mesta av appellationen till JavaScript förlorad om vi bromsar uppdateringscykeln genom att få utvecklare att vänta medan vi sammanställer.Med andra ord, vi måste konstruera Flows analys för att vara extremt snabb - den måste svara på kodändringar utan märkbar försening, medan den fortfarande är tillräckligt exakt i praktiken.