Programming TypeScript


Download 1.81 Mb.
bet86/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   82   83   84   85   86   87   88   89   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

Dekoratorlar


Dekoratorlar - bu bizga sinflar, sinf usullari, xususiyatlari va metod parametrlari bilan metadasturlash uchun toza sintaksisni taqdim etadigan eksperimental TypeScript xususiyatidir. Ular shunchaki siz bezab turgan narsaning funksiyasini chaqirish uchun sintaksisdir.

T SC bayrog'i: eksperimental dekoratorlar


Ular hali ham eksperimental bo'lgani uchun, ya'ni ular orqaga mos kelmaydigan tarzda o'zgarishi yoki kelajakda TypeScript nashrlarida butunlay olib tashlanishi mumkin - dekoratorlar TSC bayrog'i orqasida yashiringan. Agar siz bunga rozi bo‘lsangiz va bu funksiya bilan o‘ynashni istasangiz, tsconfig.json faylida “experimentalDecorators”: true ni o‘rnating va o‘qing.
Dekoratorlar qanday ishlashini tushunish uchun keling, misol bilan boshlaylik:
@serializable sinf APIPayload { getValue () : Yuk yuk { // ...
}
}
@serializable sinf dekoratori bizning APIPayload sinfimizni o'rab oladi va ixtiyoriy ravishda uning o'rnini bosadigan yangi sinfni qaytaradi. Dekoratorlarsiz siz xuddi shu narsani amalga oshirishingiz mumkin:
ruxsat bering APIPayload = seriyali ( sinf APIPayload {
getValue () : Yuk yuki {
// ...
}
})
Har bir dekorator turi uchun TypeScript sizdan berilgan nomga va shu turdagi dekorativ uchun kerakli imzoga ega bo'lgan funksiyaga ega bo'lishingizni talab qiladi ( 5-1-jadvalga qarang ).
5-1-jadval. Har xil turdagi dekorativ funktsiyalar uchun kutilgan turdagi imzolar

Siz nima bezayapsiz

Imzoning kutilayotgan turi

Sinf

(Konstruktor: {new(...any[]) => any}) => any

Usul

(classPrototype: {}, methodName: string, deskriptor: PropertyDescriptor) => har qanday

Statik usul

(Konstruktor: {new(...any[]) => any}, methodName: string, descrip tor: PropertyDescriptor) => har qanday

Usul parametri

(classPrototype: {}, paramName: string, index: number) => bekor

Statik usul parametri

(Konstruktor: {new(...any[]) => any}, paramName: string, index:
raqam) => bekor

Mulk

(classPrototype: {}, propertyName: string) => har qanday

Statik xususiyat

(Konstruktor: {new(...any[]) => any}, propertyName: string) => any

Mulk oluvchi/sozlovchi

(sinfPrototipi: {}, xususiyatName: string, deskriptor:
PropertyDescriptor) => har qanday

Statik xususiyatni oluvchi/sozlovchi

(Konstruktor: {new(...any[]) => any}, propertyName: string, deskriptor: PropertyDescriptor) => har qanday

TypeScript hech qanday o'rnatilgan dekoratorlar bilan ta'minlanmaydi: qanday dekoratorlardan foydalansangiz, o'zingiz amalga oshirishingiz kerak (yoki NPM-dan o'rnatish). Har bir dekorator turi uchun - sinflar, usullar, xususiyatlar va funktsiya parametrlari uchun amalga oshirish - bu nima bezashiga qarab, ma'lum bir imzoni qondiradigan muntazam funktsiyadir. Misol uchun, bizning @serializable dekoratorimiz quyidagicha ko'rinishi mumkin:

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   82   83   84   85   86   87   88   89   ...   206




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