Vivasoft-logo

5.7 প্যারামিটার ডেকোরেটর্স

প্যারামিটার হলো ফাংশনে পাঠানো ভ্যালু বা আর্গুমেন্ট।.প্যারামিটার ডেকোরেটর ঠিক প্যারামিটার ডিক্লারেশনের আগে ডিক্লেয়ার করা হয়।

প্যারামিটার ডেকোরেটরের এক্সপ্রেশনটি একটি  ফাংশন হিসেবে রানটাইমে  কল হয় এবং এতে তিনটা আর্গুমেন্ট থাকবে।

১।  target: স্ট্যাটিক মেম্বারের  ক্ষেত্রে ক্লাসটির কন্সট্রাক্টর ফাংশন  অথবা  ইনস্ট্যান্স   মেম্বারের ক্ষেত্রে ক্লাসটির প্রটোটাইপ 

২। propertyKey: মেম্বারটির নাম

৩। parameterIndex: ফাংশনের প্যারামিটার লিস্টে প্যারামিটারের অরজিনাল ইনডেক্স

এই ডেকোরেটরের প্যারামিটারের আচরণ সরাসরি পরিবর্তন করার ক্ষমতা নেই। কিন্তু প্যারামিটারকে বাধা (intercept) দিতে পারবে, প্যারামিটারের উপর নির্ভর করে বিভিন্ন কাজ সম্পন্ন করতে পারবে এবং পরোক্ষভাবে একটা পরিবর্তিত ভ্যালু রিটার্ন করতে পারে। একটা প্যারামিটারে আমরা একাধিক ডেকোরেটর ব্যবহার করতে পারি কিন্তু তা বাইরেরতম থেকে ভিতরেরতম অর্ডারে কাজ করবে।

প্যারামিটার ডেকোরেটরের রিটার্ন ভ্যালু উপেক্ষিত হয়।

এখন আমরা একটি কোড উদাহরণ লক্ষ্য করি:

				
					function LogParameter(
 target: Object,
 propertyKey: string | symbol,
 parameterIndex: number
) {
 console.log(
   `Parameter decorator called on ${String(
     propertyKey
   )} at index ${parameterIndex}`
 );
}


class ParameterDecoratorExample {
 findSquare(@LogParameter value: number) {
   console.log(`Square of ${value} is, ${value * value}`);
 }
}


const example = new ParameterDecoratorExample();
example.findSquare(4);
				
			

আউটপুট:

				
					Parameter decorator called on findSquare at index 0
Square of 4 is, 16
				
			

এই উদাহরণে  LogParameter ফাংশন একটি প্যারামিটার ডেকোরেটর যা  ParameterDecoratorExample ক্লাসের  findSquare ফাংশনের ভ্যালু প্যারামিটারে প্রয়োগ করা হয়েছে। ডেকোরেটরটি প্যারামিটারটির ব্যাপারে কিছু ইনফর্মেশন লগ করবে যা আমরা প্রোপার্টি কী (Key) আর প্যারামিটার ইনডেক্স থেকে পাই।