funktsiyasi createElement ( teg : 'a' ) : HTMLAnchorElement funksiyasi createElement ( teg : 'kanvas' ) : HTMLCanvasElement funktsiyasi createElement ( teg : 'stol' ) : HTMLTableElement funktsiyasi createElement ( teg : string ) : HTMLElement {
// ...
}
Qaysi sintaksisdan foydalanish sizga bog'liq va siz qanday funktsiyani ortiqcha yuklayotganingizga bog'liq (funktsiya ifodasi yoki funksiya deklaratsiyasi).
To'liq turdagi imzolar funksiyani qanday chaqirishingizni ortiqcha yuklash bilan cheklanmaydi. Siz ularni funksiyalardagi xususiyatlarni modellashtirish uchun ham ishlatishingiz mumkin. JavaScript funktsiyalari shunchaki chaqiriladigan ob'ektlar bo'lganligi sababli, siz ularga quyidagi ishlarni bajarish uchun xususiyatlarni belgilashingiz mumkin:
funktsiyasi warnUser ( ogohlantirish ) { agar ( warnUser . wasCalled ) {
qaytish
}
warnUser . chaqirildi = rost ogohlantirish ( ogohlantirish )
}
warnUser . chaqirildi = yolg'on
Ya'ni, biz foydalanuvchiga ogohlantirishni ko'rsatamiz va biz ogohlantirishni bir necha marta ko'rsatmaymiz. WarnUserning toʻliq imzosini kiritish uchun TypeScript dan foydalanamiz :
turi WarnUser = {
( ogohlantirish : string ) : bekor chaqirildi : mantiqiy }
warnUser nafaqat chaqirilishi mumkin bo'lgan funksiya, balki u mantiqiy bo'lgan wasCal led xususiyatiga ham ega .
Polimorfizm
Hozirgacha bu kitobda biz konkret turlarning qanday va nima uchun ekanligi, konkret turlardan foydalanadigan funksiyalar haqida gaplashdik. Beton turi nima ? Shunday bo'ladiki, biz hozirgacha ko'rgan har bir tur aniq:
mantiqiy
ip
Sana[]
{a: raqam} | {b: string}
(raqamlar: raqam[]) => raqam
Beton turlari siz kutayotgan turni aniq bilsangiz va bu tur haqiqatda o'tganligini tekshirishni istasangiz foydali bo'ladi. Ammo ba'zida siz qanday turni oldindan kutishni bilmaysiz va funksiyangizning harakatini ma'lum bir tur bilan cheklashni xohlamaysiz!
filtrni amalga oshiramiz . Siz massivni takrorlash va uni yaxshilash uchun filtrdan foydalanasiz; JavaScript-da u quyidagicha ko'rinishi mumkin:
Do'stlaringiz bilan baham: |