Programming TypeScript


agar ( obuna bo'lish ) { bu


Download 1.81 Mb.
bet183/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   179   180   181   182   183   184   185   186   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

agar ( obuna bo'lish ) {
bu . _obuna bo'ling = obuna bo'ling
}
}
statik yaratish < T > ( obuna ?: ( obunachi : obuna < T > ) => TeardownLogic ) {
qaytish yangi Kuzatish mumkin < T > ( obuna )
}
obuna bo'ling ( kuzatuvchi? : PartialObserver < T > ) : Obuna
obuna bo'lish (
keyingi ?: ( qiymat : T ) => bekor , xato ?: ( xato : har qanday ) => bekor , to'liq ?: () => bekor
) : Obuna obuna bo'lish (
observerOrNext? : PartialObserver < T > | (( qiymat : T ) => bekor ),
xato ?: ( xato : har qanday ) => bekor , to'liq ?: () => bekor ) : Obuna { // ...
}
}
deklaratsiyalar bayrog'i yoqilgan holda TSC orqali ishga tushirish ( tsc -d Observable.ts ) quyidagi Observable.d.ts turdagi deklaratsiyani beradi:
{ Obunachi } ni import qiling './Subscriber' import { Obuna } dan './Obuna'
import qilish { PartialObserver , Subscribable , TeardownLogic } dan './turlari'
eksport e'lon qilish sinf Kuzatish mumkin < T > asboblar Obuna < T > {
_isScalar : mantiqiy konstruktor ( obuna bo'ling ?: ( bu : Kuzatish mumkin < T > , abonent : abonent < T >
) => TeardownLogic
);
statik yaratish < T > (
obuna bo'ling ?: ( obunachi : obunachi < T > ) => TeardownLogic
) : Kuzatish mumkin < T >
obuna bo'ling ( kuzatuvchi? : PartialObserver < T > ) : Obuna
obuna bo'lish (
keyingi ?: ( qiymat : T ) => bekor , xato ?: ( xato : har qanday ) => bekor , to'liq ?: () => bekor
) : Obuna
}
Sinfdan oldin decre kalit so'ziga e'tibor bering . Biz aslida sinfni tip deklaratsiyasida aniqlay olmaymiz, lekin biz .d.ts faylining mos keladigan JavaScript faylida sinfni aniqlaganimizni e'lon qilishimiz mumkin. Tasdiqlash kabi deklaratsiyani o'ylab ko'ring : "Qasamki, mening JavaScriptim shu turdagi sinfni eksport qiladi."
Tur deklaratsiyasida ilovalar mavjud emasligi sababli, biz obuna uchun ikkita ortiqcha yukni saqlab qolamiz , uni amalga oshirish uchun imzo emas.
E'tibor bering, Observable.d.ts faqat Observable.ts , minus ilovalar. Boshqacha qilib aytganda, bu Observable.ts dan faqat turlar .
Ushbu turdagi deklaratsiya RxJS kutubxonasidagi Observable.ts dan foydalanadigan boshqa fayllar uchun foydali emas , chunki ular Observable.ts manba TypeScript fayliga kirish huquqiga ega va undan bevosita foydalanishi mumkin. Agar siz TypeScript ilovangizda RxJS ishlatsangiz, bu foydali bo'ladi.
O'ylab ko'ring: agar RxJS mualliflari o'zlarining TypeScript-ni ishlatadigan foydalanuvchilari uchun NPM-da ma'lumot yozishni xohlasalar (RxJS TypeScript-da ham, ikkalasida ham ishlatilishi mumkin)
JavaScript ilovalari), ular ikkita variantga ega bo'ladi: ikkala manba TypeScript fayllarini (TypeScript foydalanuvchilari uchun) va kompilyatsiya qilingan JavaScript fayllarini (JavaScript foydalanuvchilari uchun) paketlash yoki TypeScript foydalanuvchilari uchun turdagi deklaratsiyalar bilan birga kompilyatsiya qilingan JavaScript fayllarini jo'natish. Ikkinchisi fayl hajmini kamaytiradi va to'g'ri import nima ekanligini aniq ko'rsatmaydi. Bu, shuningdek, ilovangiz uchun kompilyatsiya vaqtlarini tez saqlashga yordam beradi, chunki TSC nusxasi har safar oʻz ilovangizni kompilyatsiya qilganingizda RxJS ni qayta kompilyatsiya qilishi shart emas (aslida, biz 255-betdagi “Loyihaga havolalar” boʻlimida taqdim etadigan optimallashtirish strategiyasi ishlayotganining sababi shu . !).
Tur deklaratsiyasi fayllari bir nechta foydalanishga ega:

  1. siz yaratgan JavaScript fayllaringizga mos keladigan .d.ts fayllarini qidiradi . Bu TypeScript-ga loyihangiz uchun qanday turlar mavjudligini aytadi.

  2. TypeScript-ni qo'llab-quvvatlaydigan kod muharrirlari (masalan, VSCode) ushbu .d.ts fayllarini o'qib, foydalanuvchilarga TypeScript-dan foydalanmasalar ham, yozayotganlarida foydali bo'lgan maslahatlar beradi.

  3. Ular TypeScript kodini keraksiz qayta kompilyatsiya qilishdan qochib, kompilyatsiya vaqtlarini sezilarli darajada tezlashtiradi.

Tur deklaratsiyasi TypeScript-ga “JavaScript-da aniqlangan bu narsa bor va men uni sizga tasvirlab beraman” deb aytishning bir usuli hisoblanadi. Biz turdagi deklaratsiyalar haqida gapirganda, ularni qiymatlarni o'z ichiga olgan oddiy deklaratsiyalardan farqlash uchun ularni ko'pincha ambient deb ataymiz ; masalan, atrof-muhit o'zgaruvchisi deklaratsiyasi o'zgaruvchi JavaScript-ning biror joyida aniqlanganligini e'lon qilish uchun declare kalit so'zidan foydalanadi , oddiy bo'lmagan o'zgaruvchilar deklaratsiyasi esa declare kalit so'zidan foydalanmasdan o'zgaruvchini e'lon qiladigan oddiy let yoki const deklaratsiyasidir . Siz bir nechta narsalar uchun turdagi deklaratsiyalardan foydalanishingiz mumkin:

  • TypeScript-ga JavaScript-da biron bir joyda aniqlangan global o'zgaruvchi haqida aytib berish. Misol uchun, agar siz Promise global yoki belgilangan process.env ni brauzer muhitida to'ldirgan bo'lsangiz, TypeScript-ga e'tibor berish uchun muhit o'zgaruvchisi deklaratsiyasidan foydalanishingiz mumkin.

  • Loyihangizning hamma joyida mavjud bo'lgan turni aniqlash uchun uni ishlatish uchun avval uni import qilishingiz shart emas (biz buni atrof-muhit turi deklaratsiyasi deb ataymiz).

  • TypeScript-ga NPM bilan o'rnatgan uchinchi tomon moduli haqida aytib berish ( atrof-muhit moduli deklaratsiyasi ).

Tur deklaratsiyasi, siz undan nima maqsadda foydalanayotganingizdan qat'i nazar, skript rejimi .ts yoki .d.ts faylida yashashi kerak ( 222-betdagi “Modul rejimiga qarshi skript rejimi” dagi skript rejimi haqida oldingi muhokamamizni eslang ). An'anaga ko'ra, biz faylimizga .d.ts kengaytmasini beramiz, agar unda tegishli .js fayli bo'lsa; aks holda, biz .ts kengaytmasidan foydalanamiz . Faylni nima deb atashingizning ahamiyati yo'q — masalan, men bitta yuqori darajadagi type.ts ga u noqulay bo'lguncha yopishib qolishni yaxshi ko'raman — va bitta turdagi deklaratsiya faylida siz xohlagancha ko'p turdagi deklaratsiyalar bo'lishi mumkin.
Va nihoyat, turdagi deklaratsiya faylidagi yuqori darajadagi qiymatlar declare kalit so'ziga muhtoj bo'ladi
( letni e'lon qilish , funktsiyani e'lon qilish , sinfni e'lon qilish va hokazo), yuqori darajadagi turlar va interfeyslar bunday qilmaydi.
Ushbu asosiy qoidalardan tashqari, keling, har bir turdagi deklaratsiyaga oid ba'zi misollarni qisqacha ko'rib chiqaylik.

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   179   180   181   182   183   184   185   186   ...   206




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