Programming TypeScript


funktsiyasi CompanyID ( id : string ) { qaytish


Download 1.81 Mb.
bet125/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   121   122   123   124   125   126   127   128   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

funktsiyasi CompanyID ( id : string ) { qaytish id kabi Kompaniya ID }
funktsiyasi OrderID ( id : string ) { qaytish id kabi Buyurtma identifikatori }
funktsiyasi UserID ( id : string ) { qaytish id kabi UserID }
Va nihoyat, keling, ushbu turlardan foydalanish nimani anglatishini ko'rib chiqaylik:
funktsiyasi queryForUser ( id : UserID ) {
// ...
}
ruxsat bering kompaniya identifikatori = CompanyID ( '8a6076cf' ) ruxsat bering buyurtma identifikatori = OrderID ( '9994acc1' ) ruxsat bering Foydalanuvchi IDsi = Foydalanuvchi identifikatori ( 'd21b1dbf' )
queryForUser ( userId ) // OK
queryForUser ( companyId ) // Xato TS2345: "CompanyID" turidagi argument emas // "UserID" tipidagi parametrga tayinlanishi mumkin.
Ushbu yondashuvning yoqimli tomoni shundaki, uning ish vaqtining qanchalik kamligi: har bir ID konstruktsiyasi uchun atigi bitta funktsiya chaqiruvi, baribir JavaScript VM tomonidan kiritilishi mumkin. Ishlash vaqtida har bir identifikator oddiygina satrdir - brend faqat kompilyatsiya vaqti konstruksiyasidir.
Shunga qaramay, ko'pgina ilovalar uchun bu yondashuv ortiqcha. Ammo katta ilovalar uchun va har xil turdagi identifikatorlar kabi osongina chalkashib ketadigan turlar bilan ishlashda markali turlar qotil xavfsizlik xususiyati bo'lishi mumkin.

Prototipni xavfsiz kengaytirish


JavaScript ilovalarini yaratishda an'anaga ko'ra, o'rnatilgan turlar uchun prototiplarni kengaytirish xavfsiz emas. Ushbu asosiy qoida jQuery davridan oldin, dono JavaScript sehrgarlari MooTools kabi kutubxonalar qurgan paytga borib taqaladi.Bu to'g'ridan-to'g'ri o'rnatilgan prototip usullarini kengaytirdi va ustiga yozdi. Ammo juda ko'p sehrgarlar bir vaqtning o'zida prototiplarni ko'paytirganda, nizolar paydo bo'ldi. Va statik turdagi tizimlarsiz, siz bu ziddiyatlarni faqat ish vaqtida g'azablangan foydalanuvchilardan bilib olasiz.
Agar siz JavaScript-dan kelmasangiz, Java-da buni bilib hayron bo'lishingiz mumkin.
Skriptda siz har qanday o'rnatilgan usulni (masalan, [].push , 'abc'.toUpperCase yoki Object.assign ) ish vaqtida o'zgartirishingiz mumkin. Bu juda dinamik til bo'lgani uchun JavaScript har bir o'rnatilgan ob'ektning prototiplariga to'g'ridan-to'g'ri kirish imkonini beradi - Array.prototype , Function.prototype , Object.prototype va boshqalar.
Bir paytlar ushbu prototiplarni kengaytirish xavfli bo'lgan bo'lsa-da, agar sizning kodingiz TypeScript kabi statik turdagi tizim bilan qoplangan bo'lsa, endi buni xavfsiz bajarishingiz mumkin.33
Masalan, biz Array prototipiga zip usulini qo'shamiz . Prototipni xavfsiz kengaytirish uchun ikkita narsa kerak bo'ladi. Birinchidan, .ts faylida (aytaylik, zip.ts ), biz Array prototipining turini kengaytiramiz ; keyin biz prototipni yangi zip usulimiz bilan kengaytiramiz:
// TypeScript-ga .zip interfeysi haqida aytib bering Massiv < T > { zip < U > ( roʻyxat : U []) : [ T , U ][] }
// .zip dasturini amalga oshirish
Massiv . prototipi . zip = < T , U > funktsiyasi ( bu : T [], ro'yxat : U [] ) : [ T , U ][] { qaytish bu . xarita (( v , k ) => kortej ( v , roʻyxat [ k ])
)
}
Array ga zip qo'shayotganimizni aytishdan boshlaymiz . Biz global Array interfeysini kengaytirish va allaqachon global miqyosda aniqlangan interfeysga o'zimizning zip usulimizni qo'shish uchun interfeyslarni birlashtirishdan foydalanamiz ( "Deklaratsiyani birlashtirish" 93-bet ).
222-betdagi “Modul rejimi va skript rejimi” da tavsiflanganidek skript rejimida - biz to'g'ridan-to'g'ri aniq interfeysni e'lon qilish orqali global Array interfeysini kengaytira oldik. mavjud Array interfeysi bilan bir xil nomga ega va TypeScript biz uchun ikkalasini birlashtirishga yordam beradi. Agar bizning faylimiz modul rejimida bo'lsa (masalan, zip dasturini amalga oshirish uchun biror narsani import qilishimiz kerak bo'lsa, shunday bo'lishi mumkin), biz global kengaytmani global turdagi deklaratsiyaga o'rashimiz kerak edi (qarang: "Tur deklaratsiyasi" 230-betda ):

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   121   122   123   124   125   126   127   128   ...   206




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling