TypeScript vs FlowType

Inimesed näevad kindlasti TypeScripti väärtust ja vähemalt seda, mida see võimaldab. Isegi inimesi, kes diskrediteerisid TypeScripti tõrkeotsinguid, võib nüüd näha seda õitsvat ökosüsteemi uurimas (olen kindel, et teate mõnda neist inimestest).

Kuid inimesed küsivad minult (ja ka teistelt) FlowType'i ja TypeScripti kohta. Muidugi on minu arvamus erapoolik. Ausalt, mõlemad on suurepärased valikud. See on nagu hea dokumentatsiooni kirjutamine ja empaatia tunne kaas arendajate suhtes. Kui teete seda, siis olete hea inimene. Minu põhjused TypeScripti eelistuse jaoks on järgmised:

  • `.ts / .tsx` laiend. Mulle meeldib, et .ts-failis on tüübimärkuste sisestamine, samas kui voog julgustab teid laiendama `.js` -laiendit, mis on nagu uuendamise / amortiseerumise õudusunenägu.
  • Bootstrapped. Mulle meeldib, et TypeScript on kirjutatud TypeScript (JavaScript) ja sama kaasaskantav kui JavaScript. FlowType on ocaml-is.
  • Kolmanda osapoole JavaScripti definitsioonid: kui kasutate jquery (või lodash või momentjs või oma lemmik JavaScripti libi) ja soovite seda ohutul viisil kasutada, pakub TypeScript väga kena loo ehk DefinitelyTyped.
  • Muidugi on praegune TypeScripti ökosüsteem märkimisväärselt suurem kui vooluhulk, nii et tulevikuohutuse otsimisel on vastus üsna ilmne.

FlowType'i meeskond teeb suurepärast tööd ja mul on tõesti hea meel näha, et Facebook pakub seda tasuta OSS-i tarkvarana. Tõepoolest, mõned selle ideed (nt ristmike tüübid / liittüübid / tühistatav kontseptsioon) on sillutanud teed JavaScripti paremaks analüüsimiseks ka TypeScripti jaoks .

FlowType'i müütide debunkeerimine

Ma nägin, et seal on mõned vääritimõistmised, mida tasub mainida:

FlowType laseb mul lihtsalt JavaScripti kasutada ja TypeScript sunnib mind uuele keelele

Nii Flow kui TypeScript nõuavad konkreetse faili otsest tüübikontrolli. TypeScripti puhul on diferentseerijaks faililaiend .js vs .ts, Flow puhul aga kommentaar faili ülaosas // @flow. Niipea kui olete mõlema projekti sisse lülitanud:

  • Tõenäoliselt saate vigu nii TS-is kui ka Flow-s, nt. deklareerimata muutujate puhul.
  • Saate täiendavaid süntaksivõimalusi, mis on JS superset.

Veel alglaadimise kohta

Kuna TypeScript on kirjutatud TypeScriptis (mis omakorda on lihtsalt JavaScripti), teeb see paljusid asju võimalikuks, nt brauseri mänguväljakutel: http://www.typescriptlang.org/play/. Samuti on mul üsna selge, millist projekti lähtekoodi ma tahaksin vaadata:

Arendaja tööriista kallal on keeruline töötada, ilma et arendaja tööriistast töötades saaksite endale ise midagi kasu. Kahtlane voog läbib mingil hetkel ümberkirjutamise (pärast OCAML-i tööriistade piisavalt tüütut muutumist), kuid TypeScript on juba olemas.

Kas ma ei saa mõlemat kasutada?

Sa saad. Kuid ole ettevaatlik, et nende kahe vahel on märkimisväärsed süntaksid ja semantilised erinevused.

Muud

Teised meeskonnad, kes on mõlemat hinnanud ja valinud sarnase valiku TypeScripti kasutamiseks

  • Lyft Engineering: https://eng.lyft.com/typescript-at-lyft-64f0702346ea
  • Tumblr Engineering: https://engineering.tumblr.com/post/165261504692/flow-and-typescript
  • Reddit: https://redditblog.com/2017/06/30/why-we-chose-typescript/
  • Lõtv: https://slack.engineering/typescript-at-slack-a81307fa288d
  • Jest liikudes Flow-st TypeScripti juurde https://github.com/facebook/jest/pull/7554#issuecomment-454358729
  • MemSQL Studio: https://davidgom.es/porting-30k-lines-of-code-from-flow-to-typescript/

Kui teile see postitus meeldis, klõpsake allpool olevat südant. Kas küsimusi on? Ma armastan aidata.