Programming TypeScript
Download 1.81 Mb.
|
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)
Umumiy turdagi xulosaKo'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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling