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 ভেরিয়েবলের টাইপকে ইনহেরিট করে। এখন আমাদের ফাংশনের কাজ পরীক্ষা করা যাক এবং str টাইপকে রেফার করে myStr নামক একটি ভেরিয়েবল তৈরি করি, এবং কার্লি বন্ধনীতে এটির একটি মান নির্ধারণ করি:

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

আসুন myFunc ফাংশনটি কল করি, এটির টাইপ আবার উল্লেখ করতে ভুলবেন না এবং myStr ভেরিয়েবলটিকে একটি প্যারামিটার হিসেবে পাস করি:

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

পাঠে আলোচিত উদাহরণের উপর ভিত্তি করে, একটি সংখ্যা অ্যারের দৈর্ঘ্য খুঁজে বের করার জন্য ফাংশন নির্ধারণ করুন।