sinf Mening xaritam < K , V > {
konstruktor ( initialKey : K , initialValue : V ) {
// ...
}
olish ( kalit : K ) : V {
// ...
}
o'rnatish ( kalit : K , qiymat : V ) : bekor {
// ...
}
birlashtirish < K1 , V1 > ( xarita : MyMap < K1 , V1 > ) : Mening xaritam < K | K1 , V | V1 > {
// ...
}
statik < K , V > ( k : K , v : V ) : _ Mening xaritam < K , V > {
// ...
}
}
Sinfingizni e'lon qilganingizda sinfga tegishli umumiy turlarni bog'lang . Bu yerda K va V MyMap dagi har bir misol usuli va misol xususiyati uchun mavjud .
konstruktorda umumiy turlarni e'lon qila olmaysiz . Buning o'rniga, deklaratsiyani sinf deklaratsiyasiga o'tkazing .
Sinfingizning istalgan joyida sinfga tegishli umumiy turlardan foydalaning.
Namuna usullari sinf darajasidagi generiklarga kirish huquqiga ega va shuningdek, o'zlarining generiklarini yuqorida e'lon qilishlari mumkin. .merge K va V sinf darajasidagi generiklardan foydalanadi , shuningdek, ikkita o'zining K1 va V1 generiklarini e'lon qiladi .
Statik usullar o'z sinfining umumiy parametrlariga kirish huquqiga ega emas, xuddi qiymat darajasida ular o'z sinfining misol o'zgaruvchilariga kirish imkoniga ega emaslar. da e'lon qilingan K va V ga kirish imkoniga ega emas ; Buning o'rniga u o'zining K va V generiklarini e'lon qiladi.
Siz generiklarni interfeyslarga ham bog'lashingiz mumkin:
interfeys MyMap < K , V > { olish ( kalit : K ) : V
o'rnatish ( kalit : K , qiymat : V ) : bekor }
Va funksiyalarda bo'lgani kabi, siz aniq turlarni generiklarga aniq bog'lashingiz yoki TypeScript-ga siz uchun turlarni chiqarishga ruxsat berishingiz mumkin:
ruxsat bering a = yangi MyMap < string , number > ( 'k' , 1 ) // MyMap ruxsat bering b = yangi MyMap ( 'k' , true ) // MyMap
a . olish ( 'k' )
b . set ( 'k' , noto'g'ri )
Do'stlaringiz bilan baham: |