Programming TypeScript


Download 1.81 Mb.
bet95/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   91   92   93   94   95   96   97   98   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

sinf Hayvon {} sinfi Qush uzaytiradi Hayvon {
chirp() { }
}
sinf Qarg'a uzaytiradi Qush {
caw() { }}
Ushbu misolda Crow - Qushlarning kichik turi , bu Hayvonning kichik turi . Ya'ni, Qarg'a <: Qush <: Hayvon .
bird ni qabul qiladigan va uni chiyillashiga olib keladigan funksiyani aniqlaymiz :
funktsiyasi chirqillamoq ( qush : Bird ) : Qush {
qush . chirp () qaytish qush }
Hozirgacha juda yaxshi. TypeScript qanday narsalarni chirpga o'tkazishga imkon beradi ?
chiyillash ( yangi Hayvon ) // Xato TS2345: “Hayvon” turidagi argument tayinlanmaydi chirqiroq ( yangi) Qush ) // "Qush" tipidagi parametrga. chiyillash ( yangi Qarg'a )
Bird misolini (chunki chirp parametri qushning turiga tegishli) yoki Crow misolini (chunki bu Qushning pastki turi ) o'tkazishingiz mumkin. Ajoyib: kichik turga o'tish kutilganidek ishlaydi.
Keling, yangi funktsiya yarataylik. Bu safar uning parametri funksiya bo'ladi :
funktsiyasi klon ( f : ( b : Qush ) => Qush ) : bekor {
// ...
} klonga Qushni olib , Qushni qaytaradigan f funksiya kerak . Qaysi turdagi funktsiyalarni f uchun xavfsiz tarzda o'tkazishingiz mumkin ? Shubhasiz, siz Qushni qabul qiladigan va Qushni qaytaradigan funksiyani topshirishingiz mumkin :
funktsiyasi birdToBird ( b : Qush ) : Qush {
// ...
}
klonlash ( birdToBird ) // OK
Qushlarni olib, qarg'ani yoki hayvonni qaytaradigan funksiya haqida nima deyish mumkin ?
funktsiyasi birdToCrow ( d : Bird ) : qarg'a {
// ...
}
klonlash ( birdToCrow ) // OK
funktsiyasi birdToAnimal ( d : Bird ) : Hayvon {
// ...
}
clone ( birdToAnimal ) // Xato TS2345: '(d: Bird) => Hayvon turidagi argument // '(b: Bird) => Bird' tipidagi parametrga tayinlanmaydi.
// "Hayvon" turi "Qush" turiga tayinlanmaydi.
birdToCrow kutilganidek ishlaydi, lekin birdToAnimal bizga xato beradi. Nega? Tasavvur qiling-a, klonning amalga oshirilishi quyidagicha ko'rinadi:

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   91   92   93   94   95   96   97   98   ...   206




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