Aralashmalar
xususiyat yoki aralash kalit so'zlar mavjud emas , lekin ularni o'zimiz amalga oshirish oson. Ikkalasi ham bir nechta merosni taqlid qilish (bir nechta sinflarni qamrab oluvchi sinflar) va rolga yo'naltirilgan dasturlashni amalga oshirish usullari , bu dasturlash uslubi bo'lib, unda siz "bu narsa shakldir " kabi so'zlarni aytmaysiz , balki narsaning xususiyatlarini tavsiflaysiz. , "uni o'lchash mumkin" yoki "uning to'rt tomoni bor" kabi. "Is-a" munosabatlari o'rniga siz "mumkin" va "has-a" munosabatlarini tasvirlaysiz.
Aralashmalar
Keling, mixin ilovasini yarataylik.
xatti-harakatlar va xususiyatlarni sinfga aralashtirishga imkon beruvchi naqsh . An'anaga ko'ra, aralashmalar:
Davlatga ega bo'lishi mumkin (ya'ni, misol xususiyatlari)
Faqat aniq usullarni taqdim etishi mumkin (mavhum emas)
Konstruktorlar bo'lishi mumkin, ular sinflari aralashgan tartibda chaqiriladi
TypeScript-da miksinlarning o'rnatilgan kontseptsiyasi mavjud emas, lekin ularni o'zimiz amalga oshirish oson. Masalan, TypeScript sinflari uchun disk raskadrovka kutubxonasini loyihalashtiramiz. Biz uni EZDebug deb ataymiz . Kutubxona kutubxonadan foydalanadigan sinflar haqidagi ma'lumotlarni tizimdan chiqishga imkon berish orqali ishlaydi, shunda siz ularni ish vaqtida tekshirishingiz mumkin. Biz undan shunday foydalanamiz:
sinf Foydalanuvchi {
// ...
}
Foydalanuvchi . disk raskadrovka () // "User({"id": 3, "name": "Emma Gluzman"})'ga baho beradi
Standart .debug interfeysi bilan bizning foydalanuvchilarimiz istalgan narsani disk raskadrovka qilishlari mumkin! Keling, quraylik. Biz uni miksin bilan modellashtiramiz, uni EZDebug bilan chaqiramiz . Miksin bu shunchaki c sinf instruktorini oladigan va sinf konstruktorini qaytaradigan funksiya , shuning uchun bizning miksinimiz quyidagicha ko'rinishi mumkin:
turi ClassConstructor = yangi (... args : har qanday []) => {}
Do'stlaringiz bilan baham: |