e'lon qilish global { interfeys Massiv < T > { zip < U > ( roʻyxat : U []) : [ T , U ][]
}
} global - bu global miqyosda aniqlangan barcha qiymatlarni o'z ichiga olgan maxsus nom maydoni bo'lib, modul rejimidagi fayldan global miqyosdagi nomlarni ko'paytirish imkonini beradi ( avval import qilmasdan modul rejimi faylida foydalanishingiz mumkin bo'lgan har qanday narsa ; 10-bobga qarang).
Keyin biz Array prototipida zip usulini qo'llaymiz . TypeScript biz .zip deb chaqirayotgan massivning T turini to‘g‘ri chiqarishi uchun biz ushbu turdan foydalanamiz .
Prototipni xavfsiz kengaytirish
TypeScript xaritalash funksiyasining qaytish turini (T | U)[] sifatida qabul qilganligi sababli (TypeScript u har doim nolinchi indeksda T va birinchi indeksda U boʻlgan kortej ekanligini tushunish uchun yetarlicha aqlli emas), biz kortej yordam dasturimizdan foydalanamiz. ( 141-betdagi “Kordalar uchun tur xulosasini takomillashtirish” dan ) tipni tasdiqlashga murojaat qilmasdan kortej turini yaratish.
Array interfeysini e'lon qilganimizda, biz butun TypeScript loyihamiz uchun global Array nom maydonini kengaytiramiz, ya'ni faylimizdan zip.ts import qilmasak ham , TypeScript [].zip mavjud deb o'ylaydi. Ammo ko'paytirish uchun
Array.prototype , biz Array.prototype ga zip usulini o'rnatish uchun zip ishlatadigan fayl birinchi navbatda zip.ts ni yuklashiga ishonch hosil qilishimiz kerak . Zip-dan foydalanadigan har qanday fayl avval zip.ts-ni yuklashiga qanday ishonch hosil qilishimiz mumkin?
zip.ts ni loyihamizdan aniq chiqarib tashlash uchun tsconfig.json- ni yangilaymiz , shunda iste'molchilar avval uni aniq import qilishlari kerak:
{
* istisno *: [
"./zip.ts"
]
}
zip-dan o'zimiz xohlagancha, to'liq xavfsizlik bilan foydalanishimiz mumkin :
Import './zip'
[ 1 , 2 , 3 ]
. xarita ( n => n * 2 ) // raqam[]
. zip ([ 'a' , 'b' , 'c' ]) // [raqam, satr][]
Buni ishga tushirish bizga avval xaritalash, keyin esa massivni ziplash natijasini beradi:
[
[ 2 , 'a' ],
[ 4 , 'b' ],
[ 6 , 'c' ]
]
Xulosa
Ushbu bobda biz TypeScript tip tizimining eng ilg'or xususiyatlarini ko'rib chiqdik: dispersiyaning ichki va chiqimlaridan tortib oqimga asoslangan turdagi xulosalar, aniqlashtirish, turlarni kengaytirish, umumiylik, xaritalangan va shartli turlar. Keyin biz turlar bilan ishlash uchun bir nechta ilg'or namunalarni oldik: nominal turlarni taqlid qilish uchun turdagi markalash, tur darajasida turlar bo'yicha ishlash uchun shartli turlarning taqsimlash xususiyatidan foydalanish va prototiplarni xavfsiz kengaytirish.
Agar siz hamma narsani tushunmagan bo'lsangiz yoki eslay olmasangiz, yaxshi - keyinroq bu bobga qayting va biror narsani xavfsizroq ifodalash bilan kurashayotganingizda undan ma'lumotnoma sifatida foydalaning.
Do'stlaringiz bilan baham: |