Vivasoft-logo

4.2 জেনেরিক ইন্টারফেস

জেনেরিক ফাংশনের মতই একটি জেনেরিক ইন্টারফেস – এ টাইপ প্যারামিটার ব্যবহার   করে ডাটা  টাইপ নির্দিষ্ট করে ভ্যালু এসাইন করা যায়। যেমন:

				
					interface KeyPair<T, U> {
    key: T;
    value: U;
}

let keyValue: KeyPair<number, string> = { key:1, value:"Hello" };
				
			

এটি একটি সাধারন উদাহরণ, জেনেরিক ইন্টারফেস এর আরো ব্যবহার যোগ্যতা রয়েছে। চলুন আমাদের পুরনো বন্ধু identity ফাংশনে ফিরে যাওয়া যাক।

				
					function identity<Type>(arg: Type): Type {
   return arg;
}
 
let myIdentity: { <Type>(arg: Type): Type } = identity;
				
			

ফাংশনটিতে myIdentity ভ্যারিয়েবল একটি  call signature, অর্থাৎ myIdentity ভ্যারিয়েবল কল করা হলে এটি identity ফাংশনের মত কাজ করবে। এটি পূর্বনির্দিষ্ট টাইপের ডাটা আর্গুমেন্ট রিটার্ন করবে। 

এখন এই টাইপ সিগনেচারটি আমরা একটি জেনেরিক ইন্টারফেস এ সরিয়ে নিতে পারি এবং সিগনেচারটির স্থানে আমরা ইন্টারফেস ব্যবহার করতে পারি। 

				
					interface GenericIdentityFn {
   <Type>(arg: Type): Type;
}
 
function identity<Type>(arg: Type): Type {
   return arg;
}
 
let myIdentity: GenericIdentityFn = identity;
				
			

জেনেরিক প্যারামিটারটি (<Type>) সরিয়ে GenericIdentityFn<Type> এভাবে লেখা যায়, এটি প্যারামিটারটিকে ইন্টারফেসের ভেতরকার সকল এলিমেন্টগুলোর জন্য এভেইলেবল করে তোলে।

				
					interface GenericIdentityFn<Type> {
   (arg: Type): Type;
}
 
function identity<Type>(arg: Type): Type {
   return arg;
}
 
let myIdentity: GenericIdentityFn<number> = identity;
				
			

Maintainability হল Generic Concept এর মূল বিষয়বস্তুগুলোর মধ্যে একটা। জটিল ফাংশন এবং ডাটা  টাইপ এর ক্ষেত্রে জেনেরিক ইন্টারফেস খুবই গুরুত্বপূর্ণ।