TypeScript супраць FlowType

Людзі, безумоўна, бачаць значэнне TypeScript і, па меншай меры, інструменты для гэтага. Нават людзі, якія першапачаткова дыскрэдытавалі TypeScript, якія прадухіляюць памылкі, зараз можна назіраць за вывучэннем гэтай квітнеючай экасістэмы (я ўпэўнены, што вы ведаеце некалькіх з гэтых людзей).

Аднак людзі працягваюць пытацца ў мяне (і іншых) пра FlowType vs. TypeScript. Вядома, мая думка прадузятая. Шчыра кажучы, гэта выдатны выбар. Гэта як напісанне добрай дакументацыі і суперажыванне калегам-распрацоўшчыкам. Калі вы робіце гэта, то вы добры чалавек. Мае прычыны перавагі TypeScript:

  • пашырэнне `.ts / .tsx`. Мне падабаецца ўводзіць анатацыю ў .ts файл, тады як паток прапануе вам мець пашырэнне `.js`, якое адчувае сябе як кашмар абнаўлення / састарэння.
  • Загружаны. Мне падабаецца, што TypeScript напісаны ў TypeScript (JavaScript) і гэтак жа партатыўна, як і JavaScript. FlowType знаходзіцца ў акамолі.
  • Вызначэнні JavaScript трэціх бакоў: калі вы карыстаецеся jquery (альбо lodash, або momjs, альбо ваш любімы JavaScript lib) і хочаце выкарыстоўваць яго ў бяспечны спосаб, TypeScript забяспечвае вельмі прыемную гісторыю aka Defin определенlyTyped.
  • Зразумела, цяперашняя экасістэма TypeScript значна большая, чым паток, таму, калі вы шукаеце бяспеку ў будучыні, адказ дастаткова відавочны.

Каманда FlowType робіць выдатную працу, і я вельмі рада бачыць Facebook, які прадстаўляе яго ў якасці бясплатнага праграмнага забеспячэння для OSS. Сапраўды, некалькі яго ідэй (напрыклад, тыпы перасячэння / тыпы злучэння / паніжальная канцэпцыя) таксама праклалі шлях да лепшага аналізу JavaScript для TypeScript.

Разблытванне міфаў FlowType

Ёсць некалькі непаразуменняў, якія я бачыў, якія варта адзначыць:

FlowType дазваляе мне проста выкарыстоўваць JavaScript супраць TypeScript прымушае мяне да новай мовы

І Flow, і TypeScript патрабуюць ад вас дакладнай праверкі тыпу пэўнага файла. Для TypeScript дыферэнцыятарам з'яўляецца пашырэнне файла .js vs. .ts, тады як для Flow гэта каментарый у верхняй частцы файла // @flow. Як толькі вы ўключыце альбо ў сваім праекце:

  • Вы, хутчэй за ўсё, атрымаеце памылкі ў TS і Flow, напрыклад для любых незадэклараваных зменных.
  • Вы атрымліваеце дадатковыя сінтаксічныя магчымасці, якія з'яўляюцца наборам JS.

Больш падрабязна пра загрузку

Паколькі TypeScript напісаны ў TypeScript (што, у сваю чаргу, проста JavaScript), гэта дазваляе зрабіць шмат чаго, напрыклад, на гульнявых пляцоўках браўзэра: http://www.typescriptlang.org/play/. Таксама мне дакладна зразумела, на які зыходны код праекта я хацеў бы паглядзець:

Цяжка працаваць над інструментам распрацоўніка, не атрымліваючы карысці для сябе ад працы над інструментам распрацоўніка. Падазроны паток пройдзе праз перазапіс (пасля таго, як будзе дастаткова раззлаваны інструментамі для OCAML) у нейкі момант, але TypeScript ужо ёсць.

Не магу выкарыстоўваць абодва?

Ты можаш. Але будзьце ўважлівыя, што паміж імі ёсць значныя сінтаксічныя і семантычныя адрозненні.

Іншыя

Іншыя каманды, якія ацанілі абодва і зрабілі падобны выбар з выкарыстаннем TypeScript

  • 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/
  • Прастой: https://slack.engineering/typescript-at-slack-a81307fa288d
  • Jest пераходзіць ад Flow да TypeScript https://github.com/facebook/jest/pull/7554#issuecomment-454358729
  • MemSQL Studio: https://davidgom.es/porting-30k-lines-of-code-from-flow-to-typescript/

Калі вам спадабаўся гэты пост, націсніце на сэрца ніжэй. Якія-небудзь пытанні? Я люблю дапамагаць.