Produser bedre JavaScript med Flow

Facebook avduket nylig et nytt open source-prosjekt kalt Flow. Hensikten med verktøyet er å oppdage bugs som kan oppstå fordi fordi JavaScript er et svakt typet og dynamisk programmeringsspråk.

I JavaScript kan du lage en variabel som du kaller mittNummer med en eller annen verdi, for eksempel et heltall. Du kan senere angi at mittNummer skal være noe helt annet, for eksempel strengen «ti», et flyttall som 10.0, et objekt og så videre.

Java og andre lignende språk ville klaget på dette ganske raskt og ikke latt deg kompilere programmet, men JavaScript er mer tilgivende og tenker at du bør vite best selv og gir således ingen varsler.

Mange JavaScript-utviklere setter pris på at språket inneholder denne friheten, selv om det kan være en kilde til kodefeil. Det skal sies at utviklere som kommer fra andre språk har sett på dette som en uting, og har introdusert nye språk for å bøte på dette, som for eksempel TypeScript og Dart.

Felles for disse er at du skriver kode i et språk som er strengere med hva du får lov til å gjøre enn med JavaScript, og at det kompilerer til vanlig JavaScript. Språkene har også andre positive egenskaper som er tenkt at skal gi bedre arbeidsflyt og mer oversiktlig kode (selv om dette er diskuterbart).

Ulempen er at du må lære deg et nytt språk som ikke ligner så mye på vanlig JavaScript. Det gir kanskje færre bugs, men gjør deg ikke til en bedre JavaScript-utvikler. Er det ikke bedre å lære seg å skrive ordentlig JavaScript?

Med Flow prøver Facebook å avdekke feil i kode som forårsakes av blanding av variabeltyper. Flow analyserer filene dine og sjekker at du ikke i et sted i koden sier at mittNummer er et heltall, og senere behandler det som noe annet, som en avansert linter ville gjort.

Fordelen med Flow er at du ikke behøver å gjøre noe med den eksisterende koden din for å få dette til å virke (unntatt å fikse eventuelle bugs selvfølgelig). Du trenger altså ikke begynne med type-annotering, men kan la verktøyet finne det ut for deg.

Flow gjør ingenting med koden din, men er et byggverktøy som du kan innlemme i arbeidsflyten din. Når du kjører Flow med kommandoen flow check går den gjennom koden din generer en rapport som viser eventuelle feil.

Flow finner du her: http://flowtype.org/. Du kan installere Flow via npm ved å skrive npm install -g flow-bin i konsollen. Flow er i skrivende stund kun tilgjengelig for Mac og Linux, men en binærfil for Windows dukker nok opp etterhvert.