TypeScript mening asosiy dasturlash tilim. Yillar davomida u oddiy til tanlovidan qadriyatlar majmuasiga aylandi. Gap uslub qo‘llanmasidagi qoidalar haqida emas, ikki yil va uchta yangi dasturchidan keyin ham kod bazasini o‘zgartirish yoqimli bo‘lib qolishini belgilaydigan odatlar haqida.
Qulaylikdan ko‘ra halollik. Strict rejimi ilk commit’dan yoqilgan bo‘ladi. any — tur emas, xato haqida signal; ma’lumot shaklini rostdan bilmasam, unknown ishlatib, turini toraytiraman. Kompilyatorni jim qilish uchun ishlatilgan as cast’i kabi yolg‘on tur umuman tur bo‘lmaganidan yomon, chunki keyingi kod unga ishonadi. Kompilyator e’tiroz bildirsa, odatda haq bo‘ladi; tuzatish annotatsiyada emas, ma’lumotning o‘zida.
Mumkin bo‘lmagan holatlarni haqiqatan mumkin qilma. Bir-biriga zid kelishi mumkin bo‘lgan isLoading, isError va data nomli uchta flag o‘rniga discriminated union ishlataman: idle, loading, ma’lumotli success, sababli error. Domen holatlarida ham shu qoida: to‘langan buyurtmada paymentId bo‘ladi, to‘lanmaganida bo‘lmaydi. never orqali to‘liq tekshiriladigan switch unutilgan holatni ishlab chiqarishdagi hodisadan muharrirdagi qizil chiziqqa aylantiradi.
Ichkarida ishon, chegaralarda tekshir. Turlar runtime’da yo‘qoladi, shuning uchun chegaradan o‘tadigan har bir narsa — HTTP body, webhook, forma, localStorage yoki LLM javobi — Zod yoki shunga o‘xshash sxema bilan tahlil qilinadi, tur esa shu sxemadan olinadi. Yagona haqiqat manbai tekshirayotganimiz bilan ishonayotganimiz o‘rtasida tafovut bo‘lishiga yo‘l qo‘ymaydi. Ilova ichida tiplangan ma’lumotlar har bir qatorda himoyaviy tekshiruvsiz oqadi.
Taxminlarni emas, shartnomalarni ulash. Full-stack mahsulotda API turlari OpenAPI, GraphQL Codegen, Prisma yoki umumiy paketdan generatsiya qilinadi yoxud bo‘lishiladi. Shunda maydon nomi o‘zgarsa, checkout emas, build buziladi. O‘qish qulayligi ayyorlikdan ustun: yangi xodim o‘n soniyada tushunadigan oddiy interface qo‘llanmani o‘qiganimni ko‘rsatadigan besh qavatli conditional type’dan qadrliroq. Generics ko‘z-ko‘z qilish uchun emas, qayta ishlatish uchun.
Turlar test, review yoki fikrlashning o‘rnini bosmaydi — uchalasini ham arzonlashtiradi. TypeScript dasturchisining asl qiymati shunda: har bir utility type’ni bilishda emas, keyingi odam ishonch bilan o‘zgartira oladigan kod qoldirishda. Kod bazangiz any’ga to‘lib, jamoa refactor qilishdan qo‘rqsa, hech kim tegishni istamaydigan modulni yuboring. Uni qanday tiplashimni va bu qaysi xatolarni aniqlashini ko‘rsataman.
Keyingi mahsulotingizga qoladigan insonni bering.
Boshlashga tayyormisiz? Yozing — hozir boshlayman va qolaman. Ikki haftalik topshirish emas, uzoq hamkorlik. Loyiha, talab va eng yaxshi yo‘lni muhokama qilaylik.