Programming TypeScript
funktsiyasi CompanyID ( id : string ) { qaytish
Download 1.81 Mb.
|
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 kengaytirishJavaScript 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 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 Download 1.81 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling