Flow vs TypeScript. Ո՞րն է ավելի լավ ստատիկ ստուգիչը:
Բացահայտեք այս գործիքների առավելություններն ու թերությունները, որոնք օգնում են խստացնել ձեր կոդը:
JavaScript գործիքները Flow և TypeScript շատ առումներով նման են: Այնուամենայնիվ, նրանք տարբերվում են իրենց ֆունկցիոնալությամբ և ստատիկ խաղաքարերով:
Պարզեք, թե ինչպես են Flow-ը և TypeScript-ը համեմատվում և որն է լավագույն ստատիկ ստուգիչը ձեր հաջորդ նախագծի համար:
Ի՞նչ է հոսքը:
Flow-ը ստատիկ տիպի ստուգիչ գործիք է JavaScript-ի համար, որը ստեղծվել է Facebook-ի կողմից՝ նախապես կոմպիլյացիայի և գործարկման կոդի սխալները հայտնաբերելու համար: Այն դա անում է՝ վերահսկելով ձեր ծածկագրի փոխանցած արժեքները և ինչպես են փոխվում դրանց տվյալների տեսակները ժամանակի ընթացքում: Ստատիկ ստուգման այս համակարգը բարելավում է հուսալիությունը և ընթեռնելիությունը: Այն նաև օգնում է նվազեցնել ձեր JavaScript կոդում սխալների առաջացումը:
Ի՞նչ է TypeScript-ը:
TypeScript-ը պարզապես տիպերի ստուգիչ չէ, ինչպես Flow-ը, այլ խիստ տպագրված ծրագրավորման լեզու: Microsoft-ը ստեղծել է լեզուն՝ այն կառուցելով JavaScript-ի վրա:
Ըստ պայմանականության, դուք պետք է ստեղծեք TypeScript ֆայլեր .ts ֆայլի ընդլայնմամբ: Դուք կարող եք TypeScript ֆայլը կազմել JavaScript կոդի մեջ, այնպես որ, որտեղ JavaScript-ն աշխատի, TypeScript-ը նույնպես կարող է գործարկվել:
Հոսքի կարգավորում ձեր JavaScript հավելվածի համար
Դուք կարող եք ինտեգրել Flow-ը ցանկացած JavaScript շրջանակի մեջ, որը դուք որոշում եք օգտագործել ձեր նախագծի համար: Դուք պետք է կազմաձևեք JavaScript-ի կոմպիլյատորը, ինչպիսին է Babel-ը, որպեսզի կարգավորի ձեր կոդի բոլոր հոսքերի տեսակները և այն կազմի վանիլային JavaScript-ում:
Flow-ը ձեր նախագծում տեղադրելու համար գործարկեք հետևյալ հրամանը.
yarn add --dev flow-bin
Հաջորդը, դուք պետք է գլոբալ տեղադրեք Flow հրամանի տողի ինտերֆեյսը: Այս CLI-ն ապահովում է մի քանի հրամաններ հոսքային հավելվածներ կառուցելու համար:
MacOS-ում օգտագործեք Homebrew՝ Flow CLI-ի տեղադրման համար.
brew install flow-cli
Դուք պետք է իմանաք, թե ինչպես օգտագործել Windows PowerShell-ը՝ Flow-ը Windows սարքի վրա տեղադրելու համար:
Flow CLI-ն Windows-ում տեղադրելու համար գործարկեք այս սկրիպտը ձեր PowerShell տերմինալում.
iex "& { $(irm '<https://storage.googleapis.com/flow-cli/install.ps1>') }"
Հոսքի նախագծերը պահանջում են .flowconfig ֆայլ՝ գործիքի բոլոր անհրաժեշտ կազմաձևումների համար:
Գործարկեք այս հրամանը՝ նոր կամ գոյություն ունեցող նախագծում Flow կազմաձևման ֆայլ ստեղծելու համար.
npm run flow init
Ուշադիր եղեք, որ կոնկրետ շրջանակները կարող են լռելյայն ուղարկել նախագծեր Flow կազմաձևման ֆայլով:
Վերջին բանը, որ պետք է անել, ձեր package.json ֆայլին ավելացնել Flow սցենարը.
"scripts": {
"flow": "flow"
},
Դուք այժմ հաջողությամբ կարգավորել եք Flow-ը ձեր JavaScript հավելվածում գործարկելու համար:
TypeScript-ի կարգավորում ձեր նախագծում
Գործարկեք հետևյալ հրամանը՝ ձեր նախագծում TypeScript-ը տեղադրելու համար.
npm install typescript --save-dev
Դուք նաև պետք է տեղադրեք կոմպիլյատորը՝ TypeScript կոդը վանիլային JavaScript-ում կազմելու համար: Ձեզ նույնպես կարող է անհրաժեշտ լինել կարգավորել TypeScript-ի կազմաձևը՝ աշխատանքային հոսքի ավելի լավ փորձի համար:
Տեղադրեք TypeScript կոմպիլյատորը գլոբալ այս հրամանով.
npm install -g typescript
tsconfig.json կազմաձևման ֆայլը սկզբնավորելու համար ձեր տերմինալում մուտքագրեք հետևյալ հրամանը.
tsc --init
Վերոնշյալ հրահանգները ձեզ կսկսեն օգտագործել TypeScript-ը ձեր նախագծում:
Հոսքով շենք
JavaScript ֆայլում Flow կոդը գրելու համար ցանկացած արտահայտությունից կամ հայտարարությունից առաջ հայտարարեք Flow շարահյուսությունը կոդի վերևում.
// @flow
Դուք կարող եք սահմանել փոփոխական և ֆունկցիայի տվյալների տեսակներ՝ օգտագործելով ծանոթագրությունը: Այնուհետև Flow-ը սխալ կառաջացնի, եթե ակնկալվող տեսակը չկատարվի:
Օրինակ:
// @flow
let foo : number = "Hello";
Flow-ն այստեղ սխալ կառաջացնի, քանի որ foo-ի ակնկալվող արժեքի տեսակը թիվ է, ոչ թե տող:
Գործարկեք npm run flow՝ տերմինալում սխալի ելքը տեսնելու համար.
Եթե միացնեք Flow ընդլայնումը ցանկացած նախընտրած տեքստային խմբագրիչի ներսում, կցուցադրեք ձեր խմբագրի սխալները, երբ կոդավորում եք:
Flow-ը նաև օգտագործում է տիպի եզրակացություն՝ որոշելու համար, թե որն է արտահայտության ակնկալվող արժեքը:
Օրինակ:
// @flow
function doSomething(value) {
return value * "hello";
};
let result = doSomething(6);
Դուք չեք կարող թվաբանական գործողություններ կատարել վեց թվի և բարև տողի միջև:
npm գործարկման հոսքի ելքը կլինի սխալ.
Զարգանում է TypeScript-ով
TypeScript-ի տիպի շարահյուսությունը շատ նման է Flow-ի: Դուք կարող եք սահմանել փոփոխականների և ֆունկցիաների տեսակները տիպի անոտացիայով, ինչպես կկատարեիք Flow-ում:
TypeScript-ը առաքվում է Flow-ի նման մի քանի այլ հատկանիշներով, օրինակ՝ տիպի եզրակացություն:
Վերցրեք օրինակ TypeScript կոդը.
// Typescript.ts
type Result = "pass" | "fail"
function verify(result: Result) {
if (result === "pass") {
console.log("Passed")
} else {
console.log("Failed")
}
}
Դուք կարող եք գործարկել tsc Typescript.ts՝ այս ծածկագիրը պարզ վանիլային JavaScript-ում հավաքելու համար:
Սա կլինի նույն TypeScript կոդը, որը կազմված է վանիլային JavaScript-ում.
function verify(result) {
if (result === "pass") {
console.log("Passed")
} else {
console.log("Failed")
}
}
TypeScript-ի և Flow-ի առավելություններն ու թերությունները
Այժմ դուք գիտեք, թե ինչպես սկսել օգտագործել երկու գործիքները ձեր JavaScript նախագծում: Դուք պետք է իմանաք յուրաքանչյուրի օգտագործման դրական և բացասական կողմերը:
Ինտեգրում
Flow-ի օգտագործման կարգաբերման գործընթացը մի փոքր ավելի բարդ է՝ ի տարբերություն TypeScript-ի: Դուք պետք է կարգավորեք JavaScript կոմպիլյատոր, ինչպիսին է Babel-ը կամ flow-remove-types-ը, ձեր կոդից հոսքի տեսակները հեռացնելու համար: TypeScript-ը ներառում է կոմպիլյատոր՝ TypeScript կոդը JavaScript-ի փոխակերպելու համար՝ հեշտացնելով ինտեգրումը:
Գործիքավորում
TypeScript-ն ունի շատ ավելի լավ գործիքակազմ, և JavaScript-ի շրջանակների մեծ մասն այն աջակցում է լռելյայն: Ամենահայտնի IDE-ները ապահովում են առաջին կարգի աջակցություն TypeScript-ի համար: Flow-ը նույնպես աջակցվում է, բայց պահանջում է հատուկ plug-in:
Համայնք
Ի տարբերություն Flow-ի, JavaScript շրջանակները, ինչպիսիք են React, React Native, Vue և Angular-ը, աջակցում են TypeScript-ին առանց տուփի:
Այս համատարած ընդունումը և մեծ համայնքը հանգեցնում են ավելի լավ ուսումնական ռեսուրսների, թարմացումների և գործիքների աջակցության:
Ճկունություն
Flow-ը գործում է որպես տիպի ստուգիչ, որը նախազգուշացնում է ձեզ հնարավոր վատ կոդի մասին: TypeScript-ը խանգարում է ձեզ վատ կոդ գրելուց և ունի խիստ տիպային համակարգ։ TypeScript-ն աջակցում է նաև օբյեկտների ինկապսուլյացիայի, որն օգնում է կառավարելի պահել բարդ կոդը: Flow-ը չունի այս հատկությունը:
Ծառայություններ
TypeScript-ը տրամադրում է JavaScript լեզվի բոլոր ծառայությունները, ինչպիսիք են կոդերի վերամշակումը և ավտոմատ լրացումը: Flow-ը ստատիկ տիպի ստուգիչ է, որն ապահովում է ձեր գրավոր կոդի խորը ըմբռնում և վերլուծություն:
Flow-ը կարող է աշխատել մինչև ձեր նախագծի ներմուծված մոդուլները և գրադարանները և պարզել, թե ինչպես են դրանք ազդում ձեր կոդի վրա: Օրինակ, այն կարող է հայտնաբերել և նախազգուշացնել, երբ ձեր նախագծում անհրաժեշտ գրադարանը բացակայում է կամ երբ փորձում եք մուտք գործել գոյություն չունեցող սահմանում:
Ո՞ր ստատիկ ստուգիչ պետք է օգտագործեք:
Կան բազմաթիվ վավերական փաստարկներ յուրաքանչյուր գործիք օգտագործելու համար, քանի որ յուրաքանչյուրն ունի տարբեր առանձնահատկություններ: Ոմանք կարող են առաջնահերթ լինել մի մշակողի համար, իսկ ցածր առաջնահերթություն մյուսի համար: Երկու գործիքներն էլ լավ են աշխատում իրենց առումներով և առաջարկում են առավելություններ դրանց օգտագործման համար:
Դուք պետք է ուսումնասիրեք ձեր նախագծի պահանջները և դրանց հիման վրա կիրթ որոշում կայացնեք: