Programming TypeScript


Download 1.81 Mb.
bet55/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   51   52   53   54   55   56   57   58   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

ruxsat bering ismlar = [
{ ismi : 'bet' },
{ ismi : 'caitlyn' },
{ ismi : 'xin' }
]
ruxsat bering natija = filtr (
ismlar , _ => _ . birinchi ism . startsWith ( 'b' )
) // TS2339 xatosi: "Ob'ekt" turida "firstName" xususiyati mavjud emas.
natija [ 0 ]. ism // Xato TS2339: "FirstName" xususiyati mavjud emas // "ob'ekt" turi bo'yicha.
Shu nuqtada, TypeScript nima uchun bu xatoni keltirib chiqarayotganini tushunish kerak. Aytdik
filtrlash uchun raqamlar, satrlar yoki ob'ektlar massivini o'tkazishimiz mumkin bo'lgan TypeScript . Biz bir qator ob'ektlardan o'tdik, lekin esda tutingki, ob'ekt sizga ob'ektning shakli haqida hech narsa aytmaydi. Shunday qilib, har safar massivdagi ob'ektdagi xususiyatga kirishga harakat qilganimizda, TypeScript xatoga yo'l qo'yadi, chunki biz unga ob'ekt qanday o'ziga xos shaklga ega ekanligini aytmadik.
Nima qilsa bo'ladi?
Agar siz umumiy turlarni qo'llab-quvvatlaydigan tildan kelgan bo'lsangiz, endi siz ko'zingizni yumib: "GENERIKLAR SHUNING UCHUN!" Yaxshi xabar shuki, siz joyidasiz (yomon xabar shundaki, siz baqir-chaqiringiz bilan qo'shnilarning bolasini uyg'otib yubordingiz).
Agar siz ilgari umumiy turlar bilan ishlamagan bo'lsangiz, avval ularni aniqlayman, keyin filtr funksiyamiz bilan misol keltiraman.

Umumiy turdagi parametr


Bir nechta joylarda tur darajasidagi cheklovni qo'llash uchun ishlatiladigan to'ldiruvchi turi. Polimorfik turdagi parametr sifatida ham tanilgan .
Filtrni misolimizga qaytsak , T umumiy parametri bilan qayta yozganimizda uning turi qanday ko'rinadi :
turi Filtr = {
< T > ( massiv : T [], f : ( element : T ) => mantiqiy ) : T []
}
Biz bu yerda nima qildik: “Ushbu funksiya filtri T umumiy turdagi parametrdan foydalanadi ; Biz bu turning qanday bo'lishini oldindan bilmaymiz, shuning uchun TypeScript har safar filtr deb ataganimizda nima ekanligini aniqlay olsangiz , bu shishib ketadi. TypeScript biz massiv uchun kiritgan turdan T ni chiqaradi . TypeScript filtrlash uchun berilgan qo'ng'iroq uchun T nima ekanligini aniqlagandan so'ng , u har bir ko'rgan T uchun bu turni almashtiradi . T to'ldiruvchi turiga o'xshaydi, kontekstdan matn terishchi tomonidan to'ldirilishi kerak; u parametrlaydi Filtrning turi, shuning uchun biz uni umumiy tip parametri deb ataymiz .
H ar safar "umumiy tip parametri" deb aytish juda og'ir bo'lgani uchun, odamlar ko'pincha uni "umumiy tip" yoki oddiygina "umumiy" deb qisqartiradilar. Men ushbu kitob davomida atamalarni bir-birining o'rnida ishlataman.
Kulgili ko'rinadigan burchak qavslari, <> , umumiy turdagi parametrlarni qanday e'lon qilishingiz mumkin
(ularni type kalit so'zi kabi o'ylab ko'ring, lekin umumiy turlar uchun); burchakli qavslarni joylashtirgan joyingizda generiklarni qamrab oladi (siz ularni qo'yishingiz mumkin bo'lgan bir nechta joylar mavjud) va TypeScript o'z doirasi doirasida umumiy turdagi parametrlarning barcha misollari oxir-oqibat bir xil aniq turlarga bog'langanligiga ishonch hosil qiladi. Ushbu misoldagi burchak qavslari qayerda joylashganligi sababli, TypeScript filter ga qo'ng'iroq qilganimizda aniq turlarni bizning umumiy T ga bog'laydi . Va biz filtr deb atagan narsaga qarab, qaysi beton turini T ga bog'lashni hal qiladi . Bir juft burchakli qavslar orasida siz xohlagancha vergul bilan ajratilgan umumiy turdagi parametrlarni e'lon qilishingiz mumkin.
T - bu shunchaki tur nomi va biz uning o'rniga boshqa har qanday nomni ishlatishimiz mumkin edi: A , Zebra yoki l33t . An'anaga ko'ra, odamlar T harfi bilan boshlanib, U , V , W ga qadar davom etadigan bosh harfli bitta harfli nomlardan foydalanadilar va ular qancha generik kerakligiga qarab.
Agar siz ketma-ket ko'plab generiklarni e'lon qilsangiz yoki ulardan murakkab tarzda foydalanayotgan bo'lsangiz, ushbu konventsiyadan chetga chiqish va uning o'rniga Value yoki WidgetType kabi tavsiflovchi nomlardan foydalanishni o'ylab ko'ring .
T o'rniga A dan boshlashni afzal ko'radilar . Turli dasturlash tillari jamoalari o‘z merosiga qarab u yoki bu tilni afzal ko‘radilar: funktsional til foydalanuvchilari A , B , C va boshqalarni afzal ko‘radilar, chunki ularning matematik dalillarda topish mumkin bo‘lgan yunoncha a , b va g harflariga o‘xshashligi ; Ob'ektga yo'naltirilgan til foydalanuvchilari odatda "Type" uchun T dan foydalanadilar. TypeScript, garchi u ikkala dasturlash uslubini ham qo'llab-quvvatlasa ham, oxirgi konventsiyadan foydalanadi.
Funktsiya parametri har safar ushbu funktsiyani chaqirganingizda qayta bog'langani kabi, filtrlash uchun har bir qo'ng'iroq T uchun o'ziga xos bog'lanishni oladi :

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   51   52   53   54   55   56   57   58   ...   206




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