Programming TypeScript


Download 1.81 Mb.
bet60/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   56   57   58   59   60   61   62   63   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

Umumiy turdagi xulosa


Ko'pgina hollarda, TypeScript siz uchun umumiy turdagi xulosalar chiqarishda juda yaxshi ish qiladi. Biz ilgari yozgan xarita funksiyasini chaqirganingizda , TypeScript T satr va U mantiqiy ekanligini ko'rsatadi :
funktsiyasi xarita < T , U > ( massiv : T [], f : ( element : T ) => U ) : U [] {
// ...
}
xaritasi (
[ 'a' , 'b' , 'c' ], // T massivi
_ => _ === 'a' // U qaytaradigan funksiya
)
Biroq, siz o'zingizning generiklaringizni ham aniq izohlashingiz mumkin. Jeneriklar uchun aniq izohlar hammasi yoki hech narsa; har bir talab qilinadigan umumiy turga izoh bering yoki ularning hech biri:
xarita < string , mantiqiy > (
[ 'a' , 'b' , 'c' ],
_ => _ === 'a'
)
xarita < string > ( // TS2558 xatosi: 2 turdagi argument kutilgan edi, lekin 1 ta olindi.
[ 'a' , 'b' , 'c' ],
_ => _ === 'a'
)
TypeScript har bir taxmin qilingan umumiy turning tegishli aniq bog'langan umumiy turiga tayinlanishi mumkinligini tekshiradi; Agar uni tayinlash mumkin bo'lmasa, siz xatoga duch kelasiz:
// OK, chunki mantiqiy mantiqiy | ga tayinlanishi mumkin ip
map < string , mantiqiy | string > (
[ 'a' , 'b' , 'c' ],
_ => _ === 'a'
)
map < string , number > ( [ 'a' , 'b' , 'c' ],
_ => _ === 'a' // TS2322 xatosi: "boolean" ni kiritib bo'lmaydi ) // "raqam" ni kiritish uchun.
TypeScript sizning umumiy funktsiyangizga o'tadigan argumentlardan sizning generiklaringiz uchun aniq turlarni aniqlaganligi sababli, ba'zida siz shunday holatga duch kelasiz:
ruxsat bering va'da = yangi Va'da ( hal qilish =>
hal qilish ( 45 )
)
va'da . keyin ( natija => // {} sifatida qabul qilingan
natija * 4 // Xato TS2362: Arifmetik amalning chap tomoni ) // "har qanday", "raqam", "bigint" yoki enum turida bo'lishi kerak.
Nima beradi? Nima uchun TypeScript natijani {} deb xulosa qildi ? Biz unga ishlash uchun yetarlicha maʼlumot bermaganimiz uchun — TypeScript umumiy funksiya argumentlari turlaridan faqat umumiy funksiya argumentlari turlaridan foydalanganligi sababli, u T ni sukut boʻyicha {} ga qoʻydi !
Promise ning umumiy turdagi parametriga aniq izoh berishimiz kerak :

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   56   57   58   59   60   61   62   63   ...   206




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