Nima uchun TypeScript - bu 2019 yilda Front-endni yozishning eng yaxshi usuli

Va nima uchun barchani undan foydalanishga ishontirish kerak.

FrontScript tashqi muhitda tobora ommalashib bormoqda. Allaqachon 80% ishlab chiquvchilar keyingi loyihalarida TypeScript-dan foydalanish yoki o'rganishni xohlashlarini tan olishgan. O'zim, men uni birinchi marta ishlatganimdan beri sevib qoldim. Men bundan keyingi barcha loyihalarimda bundan foydalanishda davom etaman.

Ba'zi odamlar TypeScript-ning oldingi asboblar tarmog'ining keraksiz bog'liqligi haqida tashvish bildirishadi. Bu shundaymi? Haqiqat aksincha ekanligini bilish uchun menga ergashing.

"Dinamik tipik tillar bo'yicha yigit" hikoyasi

Dasturlash faoliyatimning 18 yilligi davomida menga hech qachon statik tiplangan tillarni yoqtirishmagan. Men 2001 yilda dasturlashni boshlaganimdan beri tanlagan tillarim doimo dinamik ravishda yozilgan: PHP, JS, Ruby, Elixir. Men C ++ va Java-da bir necha dasturlarni shu erda va u erda bajarganman, lekin men har doim bu muhitlardan nafratlanardim. ("Nega menga hamma turni o'tish kerak? Bu yutadi. Men ularga o'zim g'amxo'rlik qila olaman.")

Taxminan 2 yil oldin hamma narsa o'zgargan. Men TypeScript-ni birinchi marta ishlatganimda edi. Ammo, men boshidanoq uni sevmagan edim. Dastlabki bir necha kun ichida bu meni zeriktirdi. Vaziyat tezda o'zgarib ketdi. Kodni qanchalik aniqroq kiritsam, konsolda ahmoq xatolarni qo'lda tuzatishga vaqtni tejashga yordam berayotganini payqadim. Men turlarni qadrlashni boshladim.

Keyingi ikki yil ichida, men chekka dasturlarda ishlaganimda, u burchakli yoki reaktsiyali bo'lishidan qat'i nazar, men qanday ramkadan foydalanayotganligimdan qat'i nazar, hamma narsada sog'inib qolganim shu .js loyihalarida: TypeScript .

Endi tan olishim kerak. Menga endi dinamik yozilgan tillar yoqmaydi. Men hali ham ularda juda samarali ishlay olaman, lekin IDE-da tip ta'riflarini qidirib topolmasam yoki kodni prototiplashda kompilyatorga ishonmasam, bu meni baxtsiz qiladi. (Elixirda men hali ham sog'inadigan yagona narsa - kuchli turlar.)

Yaxshiyamki, Ecma TC39 qo'mitasi JavaScript-ga statik tipdagi tizimni kiritmaguncha kutishimiz shart emas. Buning o'rniga TypeScript-dan foydalanishimiz mumkin. Ayniqsa, yangi loyihalarda, uni ishlatish qiyin bo'lgan hollarda.

Anti-TypeScript argumentlari

Shunga qaramay, ba'zilar sizning loyihangizga TypeScript-ni olib kelish:

  • yangi ishlab chiquvchilarni internatda turish muddatini ko'paytirish,
  • texnik xizmat ko'rsatishni murakkablashtiradi,
  • React bilan ko'p to'qnashuvlarni keltirib chiqaring,
  • rivojlanish vaqtini ko'paytirish,
  • loyihani bir yildan keyin mavjud bo'lmagan bir nechta hipsteryt texnologiyasiga qulflash,
  • yaxshi JS odamlarini yollashga yo'l qo'ymaslik,
  • TS bo'lmagan kodlar bazasidan kodni olib kelishni imkonsiz qilib,
  • uzoq kelajakda dasturni tahrirlashni qiyinlashtiradi.

Bularning barchasi noto'g'ri, deb aytishga jur'at etaman. TypeScript yuqorida keltirilgan barcha holatlarda sizga yordam beradi va men sizga aniq dalillar keltira olaman, nega bunday ekanligi.

Shuning uchun men ushbu maqolani yozishga qaror qildim. Ehtimol, bu sizni, do'stlaringizni, hamkasblaringizni yoki CTOni ushbu ajoyib tilga ishontirishga yordam beradi.

Eslatma: Men ushbu maqolada "TypeScript" nima ekanligini tushuntirmayman. Men undan foydalanishingiz kerak bo'lgan "nima uchun" ga to'xtalaman. Agar siz hali ham TypeScript aslida nima ekanligini bilmasangiz, avval quyidagi havolalarni o'qib chiqishingizni maslahat beraman:

  • "TypeScript nima o'zi va nima uchun uni JavaScript o'rniga ishlatardim?" - Lodewijk ning Bogaards, StackOverflow
  • TypeScript tilining rasmiy veb-sayti
  • "TypeScript - super kuchlar bilan JavaScript" - Indrek Lasn, O'rta
  • "TypeScript Deep Dive" - ​​Basarat Ali Sayidning elektron kitobi

TypeScript afzalliklari

1. Kodni tushunish osonroq

Odatda kod parchasi ustida ishlayotganingizda, masalan funktsiya kodi, uni to'liq tushunish uchun quyidagilarni tushunishingiz kerak:

  1. Qanday dalillarni qabul qiladi?
  2. U qanday qiymatga ega?
  3. U qanday tashqi ma'lumotlarni talab qiladi?
  4. Qaytariladigan qiymatni olish uchun bu dalillar va tashqi ma'lumotlar bilan nima qilish kerak?

Dinamik yozilgan tillarda, birinchi uchta savolga javob berish juda qiyin. Agar funktsiya maqola argumentini qabul qilsa, u aniq nima? Bu ba'zi maqola atributlariga ega ob'ektmi? Qanday aniq sifatlar mavjud? Article.title yoki Article.name bormi? Men har doim maqola.title mavjud deb taxmin qila olamanmi? Qanday qilib maqola.is nashr etilgan? Ushbu atribut ilova ko'p joylarida maqola ob'ektiga birlashtirilganligini bilishim mumkin, lekin men har doim shu joyda mavjudligiga amin bo'lishim mumkinmi?

Ushbu savollarning barchasiga javob berish uchun odatda quyidagilardan birini bajarish kerak bo'ladi:

a) console.log (maqola) qo'ying, brauzeringizda skriptni ishga tushiring (UI-ni biroz bosib) va jurnalni o'qing;

b) funktsiya qayerda ishlatilishini ko'rib chiqing va uning paydo bo'lishiga qaysi ma'lumotlar joylashtirilganligini kuzatib boring;

c) yaqinda ushbu kod ustida ishlagan hamkasbingizdan so'rang (ular hali ham tirik, Internetda ekanliklarini va ushbu kodni eslab qolishlarini umid qilib);

d) maqola siz o'ylaganingiz kabi, deb taxmin qiling va faqat uning ishlashiga umid qiling.

Bu ovoz sizga tanishmi?

Menimcha, bu JS, PHP, Ruby, Python, Elixir kabi har qanday dinamik yozilgan tilda odatiy veb-dastur ish oqimiga o'xshaydi.

StatScript tipidagi tillarda, siz yuqoridagi barcha savollarga darhol sizning IDE va ​​kompilyatoringizdan javob olasiz. Endi siz kodlar bazasini to'liq ko'rib chiqishingiz, hamkasblaringizga savol berish bilan shug'ullanishingiz yoki ishlab chiqarishda xatolarga duchor bo'lishingiz kerak emas.

2. Kodni amalga oshirish osonroq va tezroq

Odatda, siz yangi xususiyat yoki yangi tarkibiy qism yaratishingiz kerak bo'lsa, ehtimol sizning ish oqimi quyidagicha ko'rinishi mumkin:

  1. Komponent funktsiyasini yuklash, uning konstruktori argumentlarini tuzish, qolgan kodni yozish.
  2. Agar u biron bir tashqi yoki murakkab ma'lumotlarni (foydalanuvchi yoki maqolalar kabi) talab qilsa, qanday ko'rinishini taxmin qiling, uni o'z xotirangizda saqlang va kodda bo'lgani kabi foydalaning.
  3. Ilovangizga tarkibiy qismni joylashtiring va unga rekvizitlar qo'ying
  4. Uni qo'lda yoki birlik sinovlari bilan sinab ko'ring. (Siz unga kerak bo'lgan rekvizitni olishiga va u qanday ishlashi kerakligiga ishonch hosil qilishingiz kerak.)
  5. Agar biron-bir narsa noto'g'ri bo'lsa, kodingizga qaytib, uning noto'g'ri ekanligini bilib oling va tuzatib, "yo'q" bosqichiga o'ting. 4.

TypeScript-da u o'xshash, ammo osonroq va tezroq:

  1. Komponent vazifasini bajaring, uning tipini aniqlang va uni bajaring.
  2. Agar biron bir tashqi yoki murakkab ma'lumotlarni talab qilsa, ularning interfeyslarini qidirib toping va ularni qayta (to'liq yoki qisman) qayta ishlating.
  3. Ilovangizga tarkibiy qismni joylashtiring va unga rekvizitlar qo'ying.
  4. Bo'ldi shu. (Agar siz qo'ng'iroqni amalga oshiruvchi va qo'ng'iroqchi o'rtasidagi yozuv turlarini to'g'ri topsangiz, hamma narsa benuqson ishlashi kerak. Siz hozir sinab ko'rishingiz kerak bo'lgan yagona narsa - bu sizning tarkibiy qismingizning haqiqiy biznes mantig'i.)

Shunday qilib, har safar kodni TypeScript-ga yozganda, nafaqat o'qilishi oson va xatolarga moyil, balki asosan bu haqda mulohaza qilish osonroq bo'ladi.

3. Kodni refaktorga osonroq

Sizda reflektorni yoqtirishni xohlaydigan juda ko'p narsalar bor, lekin ular juda ko'p narsalar va fayllarga teggani uchun ularni o'zgartirishdan qo'rqasiz.

TypeScript-da bunday narsalar ko'pincha IDE-dagi "Rename Symbol" buyrug'ini bir marta bosish bilan qaytarilishi mumkin.

Dinamik yozilgan tillarda bir vaqtning o'zida bir nechta fayllarni qayta tiklashda sizga yordam beradigan eng yaxshi narsa bu Izlash va RegExp bilan almashtirish.

Statik yozilgan tillarda Qidiruv va O'zgartirish endi kerak emas. IDE buyruqlari bilan "Barcha holatlaringizni toping" va "Belgini qayta nomlash", siz ushbu funksiya, sinf yoki ob'ekt interfeysining xususiyatlarida qo'llaniladigan barcha hodisalarni ko'rishingiz mumkin.

O'zingizning tizimingizni biroz yaxshilashni, tarkibiy qismlarning nomini o'zgartirishni, foydalanuvchi ob'ektini o'zgartirishni yoki eskirgan atributni olib tashlashni xohlaganingizda, bundan keyin narsalarni buzishdan qo'rqishingiz shart emas. TypeScript sizga qayta tiklangan bitning barcha ishlatilishlarini topishga, nomini o'zgartirishga va agar kodda reflektordan keyin biron-bir mos kelmasa kompilyatsion xato haqida ogohlantirishga yordam beradi.

4. Kamroq xato

Ko'p yillik veb-saytlarni ishlab chiqish jarayonida men xatolarni tuzatishga vaqtimning taxminan 50% ni tejashga qodir ekanligimni payqadim, shunchaki yonimda kimdir o'tirganda, u xato yozayotganimda darhol menga qichqirar edi. nol bo'lishi mumkin bo'lgan qiymat yoki ob'ektni uning o'rniga qator bo'lishi kerak bo'lgan joyga o'tkazish.

Men nihoyat o'sha do'stni uchratganimni aytishdan xursandman: u TypeScript deb nomlangan.

Buning yordamida endi noto'g'ri kodni yozish qiyin kechmoqda. Agar u kompilyatsiya qilsa, u haqiqatan ham ishlayotganiga amin bo'lishingiz mumkin.

5. Kam qozonli sinovlar

O'zgaruvchilaringiz barcha berilgan joylarga to'g'ri yuborilganiga ishonchingiz komil bo'lsa, endi buni barchasini sinab ko'rishingiz shart emas.

Oddiy qozon bloki / integratsiya testlarini yozish o'rniga, sizning funktsiyalaringizning dalillari bir-birining o'rtasida to'g'ri uzatilayotganligini sinash o'rniga, ilovangizning biznes mantig'ini sinashga ko'proq e'tibor qaratishingiz mumkin.

Kamroq testlar yangi funktsiyalarni ishlab chiqish uchun qisqa vaqtni va kichikroq kod bazasini anglatadi, bu esa o'z navbatida ancha murakkab, xatolarga moyil va ularga xizmat ko'rsatish osonroq.

6. Kodni birlashtirish osonroq

Sizning jamoangizdagi yangi yosh dasturchi hozirgina yangi kodni taqdim etgan PR chiqardi. Bir qarashda hammasi to'g'ri ko'rinadi: kod yaxshi ko'rinadi, birlik sinovlari bor, hamma narsa yashil rangda o'tadi.

Siz hozir ham u ishlayotganiga ishonchingiz komilmi? Agar u mos keladigan jihoz sinovlariga ega bo'lmasa-chi? (Ha. Haqiqat bilan tanishaylik, ko'pchiligimiz hanuzgacha ularning sonini yoza olmaymiz.) Siz faqat PR yaratuvchisiga ishonasizmi? Yoki siz o'zingizning qimmatli 5 daqiqangizni kodni o'zingizda ishlatishga va sinovdan o'tkazishga qaratasizmi?

Agar sizning vosita zanjiringizda TypeScript bo'lsa, u sizga yana bir ishonch tekshiruvini beradi: typedef compility check.

Agar kod yaxshi ko'rinsa, blok sinovlari o'tkaziladi va hamma narsa tuziladi, endi hamma narsa ishlayotganiga amin bo'lishingiz mumkin.

TypeScript boshqa ishlab chiquvchilarga ishonishni osonlashtiradi. Bu siz ko'rib chiqadigan va PRlarni birlashtirgan sur'atni yaxshilashi mumkin.

(Bu boshqa yo'l bilan ketmoqda: yozuv ta'riflari tufayli, yangi ishlab chiquvchilar uchun boshqa odamlarning kodlari nima bilan shug'ullanayotganini ko'rish juda oson, unga chuqur sho'ng'in qilmasdan yoki uni o'zi ishlatmasdan).

7. Ishlab chiqaruvchiga to'g'ri ish oqimiga ega bo'lishiga yordam beradi

Kodni statik yozilgan tillarda yozayotganda, avval siz olgan ma'lumotlar turlari va keyin siz ishlab chiqarmoqchi bo'lgan ma'lumotlar haqida o'ylashingiz kerak. Odatda shundan keyingina siz haqiqiy amalga oshirishga o'tirasiz.

Ko'p odamlar o'z hayotlarini bu to'g'ri kodlash ish oqimi deb baholaydilar.

Masalan, har bir algoritmni ishlab chiqishda avval uning nazariy formulasi haqida o'ylab, so'ng uni amalda qo'llash kerak.

Yoki har safar TDD qilganingizda, avval kodingiz haqiqatda qanday ishlashini (u qanday ma'lumotlarni oladi va qanday ma'lumotlarni ishlab chiqaradi) o'ylab ko'rishingiz, test sifatida yozishingiz va keyin haqiqiy kodni amalga oshirishingiz kerak.

Xuddi shu narsa TypeScript-ga tegishli. Bu sizning kodingizning ichki versiyasiga o'tirishdan oldin interfeys haqida o'ylab ko'rishga undaydi.

TypeScript tashvishlari

1. "Bu bizning yollashimizga ziyon keltiradi"

U shunday qiladimi?

Doimiy JS so'rovlari shuni ko'rsatadiki, tobora ko'proq odamlar TSda dasturlashmoqda yoki uni sinab ko'rishga tayyor.

https://2018.stateofjs.com/javascript-flavors/typescript/

Yuqoridagi so'rov buni tasdiqlaydi: 2018 yil holatiga 80 foiz front-developerlar TypeScript-da ishlashni xohlashadi.

O'zingizning stsenariyingizda TypeScript-ni bo'lishingiz, ishga qabul qilinishingizga ziyon etkazmasligi mumkin. Bu aslida aksini qilishi mumkin. Agar ishlab chiqaruvchi bozorda mavjud bo'lgan eng yaxshi vositalardan foydalanayotganingizni ko'rsa, u sizning kompaniyangizda ishlashga tayyor bo'ladi. Zamonaviy vositalar zamonaviy ishlab chiqaruvchilarni olib keladi.

2. "Bortga chiqish ko'proq vaqt talab etadi"

Haqiqat shundaki, TypeScript JavaScript-ning ustun to'plami bo'lsa ham, bu hamma o'rganishi kerak bo'lgan yangi narsa. TS bilan tanish bo'lmagan ishlab chiquvchi bunday loyihada hamkorlik qilishni boshlashdan oldin kamida bir yoki ikki soat davomida o'qishi kerak.

Aksincha, agar sizda TypeScript-da allaqachon qurilgan loyihangiz bo'lsa, uni ishlab chiquvchilarga osongina kiritish mumkin bo'ladi. TS Syntax intuitiv va tushunish juda oson (ehtimol bu juda mashhur bo'lishining sababi ham shundadir). Umumiy funktsional interfeyslar, tip qo'riqchilar, shartli turlari? Kundalik ishingizning 99 foizida sizga hech qachon tegmaslik yoki tushunmaslik kerak. Qolgan 1% odatda boshlang'ichda bajarilishi kerak bo'lgan ishni allaqachon TS dasturchisi tomonidan tayyorlanishi mumkin.

Bundan tashqari, TS afzalliklari (yuqorida aytib o'tgan edim) tufayli, yangi ishlab chiqaruvchiga amaldagi kod bazangizda ishni boshlash osonroq bo'ladi. Agar u kichkina narsani o'zgartirishi yoki biron-bir yangi narsani amalga oshirishi kerak bo'lsa, unda ma'lumotlar bazasini ko'rib chiqish va boshqa ma'lumotlarni qidirish kerak emas. U darhol uni IDE-da o'qishi va ma'lumotlar bilan o'ynashi mumkin. TS tuzuvchisi unga foydalanadigan o'zgaruvchilar haqida tezkor fikr bildiradi va xato qilganda unga yo'l ko'rsatadi.

3. "React / Redux va TS bir-biriga mos kelmaydi"

React va TypeScript-dagi tugma komponentasi

Yolg'on. TS uzoq vaqtdan beri TSX yordamiga ega. Bundan tashqari, React.Component kabi oddiy umumiy turlar tufayli siz PropTypes-dan xalos bo'lishingiz va o'rniga haqiqiy turdagi tizimdan foydalanishingiz mumkin.

To'g'ri, taxminan bir yil oldin TypeScript-ni Redux-ning harakat yaratuvchilari bilan ishlashi uchun bir oz qozon kodini yozish kerak edi. Ammo TS 2.8 2018 yil fevral oyida chiqarilganligi sababli, bu endi ish emas. Siz TypeScript-da oddiy va oddiy React / Redux kodiga ega bo'lishingiz mumkin. FYI, React Contexts yoki Hooks TypeScript bilan mukammal ishlaydi.

4. "TS ilovasida JS kodini qayta ishlatib bo'lmaydi"

Yana, yolg'on. Har qanday JS kodi haqiqiy TS koddir.

Agar siz TS-ni qat'iy rejimda (noImplicitAny) ishlatsangiz, JS kodini ishlashi uchun bu erga va u erga ba'zi turlarni qo'shishingiz kerak bo'ladi. Ammo bu shunday! Hatto sizning JS React tarkibiy qismlarini avtomatik ravishda TS-ga avtomatik ravishda o'zgartira oladigan IDE plaginlari ham mavjud.

O'zingizning TS loyihangizga eski g'alati sotuvchingiz js lib-ni nusxalashingiz kerak bo'lganda: buni amalga oshiring. Agar unda TS yozuvi mavjud bo'lmasa (bu kamroq va tez-tez sodir bo'ladigan bo'lsa), ularni o'zingiz qo'shing yoki sotuvchiga murojaat qilganda shunchaki har qanday ma'lumotdan foydalaning. To'satdan siz butun ilovangizda xavfsizlik xavfsizligini yo'qotishingizga o'xshamaydi. Siz uni faqat ta'minlanmagan sotuvchiga tegadigan qatlamda yo'qotasiz. Ammo bu hech bo'lmaganda qatlamingizni oson yozishga to'sqinlik qilmaydi. Va sotuvchiga, siz ular uchun foydali bo'lishi to'g'risida qaror qilganingizda, har doim unga yozilgan yozuvlarni qo'shib qo'yishingiz mumkin.

5. "TypeScript-ni tanlasak, kelajakda hech kim qo'llab-quvvatlamaydigan eski vositaga ega bo'lishimiz mumkin"

Hozirda TypeScript Microsoft, Asana, Lyft, Slack, barcha Angular 2+ dasturchilari, ko'plab React & Vue.js dasturchilari va boshqa minglab kompaniyalar tomonidan ishlatilmoqda. Har kuni ko'plab boshqalar ularga qo'shilmoqda. TypeScript - hozirgi vaqtda eng mashhur JS to'plami va yaqin orada hech qachon pasaymaydi.

Bunday tildan voz kechish ehtimoli qanday?

Nolga yaqinroq deyman. TS o'lishi mumkin bo'lgan yagona stsenariy, agar JS o'z tillariga turlarni keltirsa. Ammo bu tez orada amalga oshmaydi. Hech bo'lmaganda keyingi ~ 5-10 yil ichida. Aslida ro'y berishi mumkin bo'lgan kamdan-kam holatlarda, siz TS dan tipik JS-ga osongina ko'chib o'tishga imkon beradigan vositalar ham bo'lishiga amin bo'lishingiz mumkin.

~ 5–10 yil endi hech kim Reaktsiya, Vue va Burchlarni bilmaydigan vaqt bo'lishi mumkin. Ammo siz taxmin qilayotgan ramkalarga yopishishda muammoni ko'rmaysizmi? ;)

6. "Oqim haqida nima?"

TypeScript sizga Flow qilgan narsalar va boshqa narsalarni beradi. Bu yana ommalashgan usul.

So'nggi 2 yil ichida TS vs Flow npm-ni yuklab olish (npmtrends.com)

Oqimni umuman hisobga olmasligingiz uchun bu etarli bo'lishi kerak. Agar xuddi shu narsa bo'lsa-da, lekin kam funksionallik va kamroq hamjamiyat tomonidan qo'llab-quvvatlanadigan bo'lsa, nega buni hisobga olasiz?

Tushlik paytida Flow TS bilan deyarli 3 yil oldin ommabop bo'lib kelgan, o'sha paytda ular ikkalasi ham bozorda yangi ishtirokchilar edilar. Ulardan birini Microsoft va Angular hamjamiyati taklif qilsa, boshqasini Facebook va ba'zi React jamoalari afzal ko'rishdi.

Oxir oqibat TypeScript g'olib bo'ldi. Hozirgi kunda barcha oldingi ramkalardan ko'proq ishlab chiquvchilar TypeScript-ga o'tmoqdalar.

U erda yana bir nechta tipik-JS alternativalar mavjud (masalan, PureScript yoki Elm), ammo ularni bu erda ko'rib chiqmaslik kerak. Men keng jamoatchilik tomonidan qo'llab-quvvatlanadigan va bir nechta sevimli mashg'ulotlariga emas, balki uni ishlab chiqarishda ishlatadigan bir nechta kompaniyalar haqida gaplashmoqchiman. (Kechirasiz, millat.)

TypeScript konsepsiyasi

1. Yig'ish bosqichini talab qiladi

Node.js-ning ba'zi do'stlari menga ular uchun TSni kiritish shunchaki kerak emasligini aytishdi, chunki Node-da ularni ishga tushirishdan oldin barcha .ts fayllarini oldindan yozib olish zarurati tug'diradi.

Tuzatish va ishlab chiqish sozlamalarini yaxshi bajara oladigan narsa bo'lsa-da, men sizning Node.js ilovangizga ozgina qo'shimcha xarajatlarni qo'shishiga rozi bo'lolmayman.

Ammo men Front-end muhitida bunga rozi bo'lolmayman. Hozirgi kunda har bir kishi JS-ni front-endda kompilyatsiya qilmoqda. Sizga eski brauzer yordami kerakmi? ES7 xususiyatlari? CSS-in-JSmi? Bularning barchasi uchun siz allaqachon babeldan foydalandingiz. TypeScript-ni boshqa har qanday JS (shu jumladan ES7 yoki JSX) sintaksisi singari Babel bilan ham kompilyatsiya qilish mumkin.

TypeScript-ni sizning oldingi loyihangizga olib kelsangiz, o'rnatish sozlash uchun deyarli hech qanday foyda keltirmaydi. (Bu sizning JS-ni umuman yarata olmagan holatlardagina bo'lishi mumkin, ammo bu juda kamdan-kam hollarda oldingi qismda bo'ladi).

2. O'rnatish biroz qiyin

Men bunga rozi bo'lishim mumkin. Masalan, NextScript.js ilovasi va TypeScript-dagi Next.js ilovasi o'rtasidagi farq nima? Ikkinchi holda, Node.js serveringizni, veb-to'plamingizni va jest-testlarni ishga tushirishingizni TypeScript bilan ishlashingiz uchun qilishingiz kerak. Bundan tashqari, har doim React, Redux, Styled-Component kabi ba'zi bir kutubxonani qo'shganda, siz npm i @ types / styled-komponentlar kabi unga tipedeflarni qo'shishingiz kerak bo'ladi (agar libosi TS tipedefs fayliga kirmasa).

O'zingizga javob berishingiz kerak bo'lgan savol, siz bunday ishni qanchalik tez-tez qilasiz? Barcha TypeScript afzalliklaridan iste'foga chiqishga loyiq bo'lish uchun ko'p kuch sarflanganmi?

Xulosa

Men hammamiz to'satdan TypeScript-ga o'tamiz deb aytayapmanmi? Yoq. Masalan, mavjud loyihada unga o'tish, albatta, juda ko'p ish va buni amalga oshirishdan oldin yaxshilab o'ylab ko'rish kerak.

Ammo, agar siz vaqt o'tishi bilan saqlab turilishi kerak bo'lgan yangi dasturni yaratayotgan bo'lsangiz, ish aniq. TypeScript-ga o'ting. To'g'risini aytsam, keyingi TX loyihalarida TSdan foydalanishning nima sabablari borligini eshitishni istayman.

Men shuni aytmoqchiman: TypeScript-dan foydalanib, boshida ozgina ortiqcha sarf-xarajatlar evaziga juda ko'p ustunliklarga ega bo'lasiz.

Keling, TypeScript-ni bajaraylik

Havolalar

TypeScript haqida

  • "TypeScript nima o'zi va nima uchun uni JavaScript o'rniga ishlatardim?" - Lodewijk ning Bogaards, StackOverflow

"TS-ga o'tish" Case Studios

  • "TypeScript at Lyft" - Muxsen Azimi, O'rta
  • "TypeScript at Slack" - Feliks Rizebberg, O'rta
  • "Qanday qilib biz 200K + LOC loyihasini TypeScript-ga ko'chirdik va voqeani aytib berish uchun tirik qoldik" - Kleo Petrov, Xashnode
  • "72 soat ichida 600K liniyalarni TypeScript-ga o'zgartirish" - Pol Draper va Rayan Stringem, LucidChard TechBlog

Boshqalar TS-ning sharhlari

  • "TypeScript-ni ishlatmaslikning 7 ta uzrlari" - Dmitriy Pashkevich, O'rta
  • "Nega TypeScript-dan foydalaning, yaxshi va yomon sabablar" - Charli Poly, Medium
  • "JavaScript va TypeScript va ReasonML" - Doktor Axel Rauschmayer, 2allik
  • "Typcriptcript - Nega undan foydalanish kerak?" - Majid, O'rta
  • "Nima uchun TypeScript tobora ommalashib bormoqda" - Meri Branskom, Yangi stack