interfeys Hayvon { faqat oʻqish uchun nomi : string yemoq ( ovqat : tor ) : bekor uyqu ( soat : raqam ) : bekor }
interfeys Mushuk { miyov () : bekor }
sinf Mushuk asboblar Hayvon , mushuk {
nomi = "mo'ylovlar" ovqat ( ovqat : tor ) {
konsol . ma'lumot ( 'Bir oz yedim' , ovqat , '. Mmm!' )
}
uyqu ( soat : raqam ) {
konsol . ma'lumot ( "Uxladim" , soatlar , "soatlar" )
} miyov() {
konsol . ma'lumot ( 'Miyav' )
}
}
Bu xususiyatlarning barchasi mutlaqo xavfsizdir. Agar siz usul yoki xususiyatni amalga oshirishni unutib qo'ysangiz yoki uni noto'g'ri amalga oshirsangiz, TypeScript yordamga keladi ( 5-3-rasmga qarang ).
5-3-rasm. Kerakli usulni amalga oshirishni unutganingizda TypeScript xatolik yuz beradi
Interfeyslarni amalga oshirish va abstrakt sinflarni kengaytirish
Interfeysni amalga oshirish haqiqatan ham mavhum sinfni kengaytirishga o'xshaydi. Farqi shundaki, interfeyslar umumiyroq va engilroq, mavhum sinflar esa ko'proq maxsus maqsadli va xususiyatlarga boy.
Interfeys - bu shaklni modellashtirish usuli. Qiymat darajasida bu ob'ekt, massiv, funksiya, sinf yoki sinf misolini bildiradi. Interfeyslar JavaScript kodini chiqarmaydi va faqat kompilyatsiya vaqtida mavjud.
Mavhum sinf faqat sinfni modellashtirishi mumkin. U ish vaqti kodini chiqaradi, ya'ni siz taxmin qilganingizdek, JavaScript sinfi. Mavhum sinflar konstruktorlarga ega bo'lishi, standart ilovalarni taqdim etishi va xususiyatlar va usullar uchun kirish modifikatorlarini o'rnatishi mumkin. Interfeyslar bularning hech birini qila olmaydi.
Qaysi birini ishlatishingiz foydalanish holatlaringizga bog'liq. Amalga oshirish bir nechta sinflar orasida taqsimlanganda, mavhum sinfdan foydalaning. “Bu sinf T ” deyishning engil usuli kerak bo'lganda , interfeysdan foydalaning.
TypeScript-ning boshqa turlari singari, TypeScript ham sinflarni nomlari bo'yicha emas, balki tuzilishi bo'yicha taqqoslaydi. Sinf o'z shakliga ega bo'lgan har qanday boshqa turga, shu jumladan sinf bilan bir xil xususiyatlar yoki usullarni belgilaydigan oddiy eski ob'ektga mos keladi. Buni C#, Java, Scala va sinflar nominal ravishda yoziladigan boshqa tillardan kelganlar uchun yodda tutish muhimdir. Bu shuni anglatadiki, agar sizda Zebrani oladigan funktsiyangiz bo'lsa va unga Pudle bersangiz , TypeScript bunga qarshi bo'lmasligi mumkin:
Do'stlaringiz bilan baham: |