TypeScript में जेनरिक्स की कंस्ट्रेंट्स

पिछले पाठों में से एक में, हमने एक जेनरिक टाइप फंक्शन बनाया था जिसे इसमें पास किए गए पैरामीटर की लंबाई प्रिंट करनी थी। हालांकि, कंपाइल करते समय हमें एक एरर मिली, क्योंकि सभी टाइप्स की लंबाई नहीं हो सकती:

typescriptfunction myFunc < T > (data: T): T {
  console.log(data.length); // एरर
  return data;
}

उस स्थिति में, हमने जेनरिक टाइप को जेनरिक ऐरे टाइप में बदलकर स्थिति को ठीक किया। लेकिन TypeScript में जेनरिक्स पर कंस्ट्रेंट्स बनाने की क्षमता है। इसके लिए एंगल ब्रैकेट्स में, वेरिएबल T के बाद कीवर्ड extends लिखते हैं। इसके बाद कर्ली ब्रैकेट्स में एक नया वेरिएबल str स्ट्रिंग टाइप का लिखते हैं। फंक्शन का बाकी कोड अपरिवर्तित रहेगा:

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

इसका मतलब है कि जेनरिक टाइप, कर्ली ब्रैकेट्स में निर्दिष्ट वेरिएबल str के टाइप को इनहेरिट करता है। अब हम अपने फंक्शन के काम को चेक करते हैं और एक वेरिएबल myStr बनाते हैं, जो str टाइप को रेफर करती है, और इसे कर्ली ब्रैकेट्स में एक वैल्यू असाइन करते हैं:

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

आइए फंक्शन myFunc को कॉल करते हैं, इसके टाइप को फिर से निर्दिष्ट करना न भूलें और वेरिएबल myStr को एक पैरामीटर के रूप में पास करें:

typescriptmyFunc <{str: string}> (myStr);
Задание 1

पाठ में देखे गए उदाहरण के आधार पर, न्यूमेरिक ऐरे की लंबाई खोजने के लिए एक फंक्शन सेट करें।