⊗tsSpGnIms 35 of 37 menu

TypeScriptda umumlashmalarning cheklovlari

Oldingi darslarning birida biz o'ziga uzatilgan parametrning uzunligini chiqarishi kerak bo'lgan umumiy turdagi funktsiyani yaratgan edik. Biroq kompilyatsiya paytida bizga xatolik berildi, chunki barcha turlar uzunlikka ega bo'lmasligi mumkin:

function myFunc < T > (data: T): T { console.log(data.length); // xatolik return data; }

O'sha paytda biz vaziyatni umumiy massiv turiga o'zgartirish orqali tuzatdik. Ammo TypeScriptda umumlashmalarning cheklovlarini yaratish imkoniyati mavjud. Buning uchun burchakli qavslar ichida, T o'zgaruvchisidan keyin extends kalit so'zini yozamiz. Undan keyin jingalak qavslar ichida string turidagi yangi str o'zgaruvchisini yozamiz. Funktsiyaning qolgan kodi o'zgarishsiz qoladi:

function myFunc <T extends {str: string}> (data: T): void { console.log(data.str.length); }

Ma'lum bo'lishicha, umumiy tur jingalak qavslarda ko'rsatilgan str o'zgaruvchisining turini meros qilib oladi. Endi bizning funktsiyamizning ishlashini tekshirib ko'ramiz va str turiga ishlovchi myStr o'zgaruvchisini yaratib, unga jingalak qavslar ichida qiymat beramiz:

let myStr: {str: string} = {str: 'abcde'};

Keling, myFunc funktsiyasini chaqiramiz, uning turini yana bir bor ko'rsatishni unutmaslik kerak va myStr o'zgaruvchisini parametr sifatida uzatamiz:

myFunc <{str: string}> (myStr);

Darsda ko'rib chiqilgan misol asosida, raqamli massivning uzunligini topish uchun funktsiyani tayinlang.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish