Vivasoft-logo

5.1 ডেকোরেটর কি?

ডেকোরেটর্স টাইপস্ক্রিপ্টের একটি স্পেশাল ডিক্লেয়ারেশন যাকে ক্লাস ডিক্লেরেশন,  একসেসোর, মেথড, প্রোপার্টিজ বা প্যারামিটারের সাথে সংযুক্ত করা যায়। ডেকোরেটর্স @expression ব্যবহার করে, যেখানে expression রানটাইমে কল করা একটি ফ্যাংশনে মূল্যায়ন হয় এবং ডেকোরেটর্সের ডিক্লেয়ারেশনের ইনফরমেশন বহন করে।

ধরুন @sealed ডেকোরেটরের জন্য sealed ফ্যাংশনটি এমন হতে পারেঃ

				
					function sealed (target: any) {
  // do something with 'target'
}
				
			

ডেকোরেটর বর্তমানে জাভাস্ক্রিপ্টের জন্য stage 2 প্রস্তাবনা কিন্তু ইতিমধ্যেই টাইপস্ক্রিপ্টের ইকো-সিস্টেমে জনপ্রিয়তা অর্জন করেছে, এটি Angular এর মতো নেতৃস্থানীয় ওপেন-সোর্স প্রজেক্ট দ্বারা ব্যবহৃত হচ্ছে। 

ডেকোরেটর একটি পরীক্ষামূলক টাইপ, তাই বাস্তবায়নের বিবরণ ভবিষ্যতে পরিবর্তিত হতে পারে, কিন্তু অন্তর্নিহিত নীতিগুলি চিরন্তন। ডেকোরেটর ব্যবহারের অনুমতি দিতে experimentalDecorators: true যোগ করুন: tsconfig.json ফাইলে, এবং নিশ্চিত করুন যে আপনার ট্রান্সপিলেশনের লক্ষ্য ES5 বা তার পরে।

ডেকোরেটর ফ্যাক্টরিঃ

ডেকোরেটর কম্পোজিশন বুঝার আগে আমাদের ডেকোরেটর ফ্যাক্টরি বুঝতে হবে। আমরা একটি ডেকোরেটর কোন ঘোষণাতে (declaration) কিভাবে ব্যবহার হয়েছে তা পরিবর্তন করতে ডেকোরেটর ফ্যাক্টরি ব্যবহার করি।
আরো সহজ ভাষায়, ডেকোরেটর ফ্যাক্টরি এমন একটি ফ্যাংশন, যা একটি ডেকোরেটর রানটাইমে যে এক্সপ্রেশণ কল করে, তাই আমাদের রিটার্ন করে।

ডেকোরেটর্স ফ্যাক্টরি আমরা নিম্নরূপে ব্যবহার করতে পারিঃ

				
					function color (value: string) {
  // this is the decorator factory, it sets up
  // the returned decorator function
  return function (target: any) {
    // this is the decorator
    // do something with 'target' and 'value'...
  };
}
				
			

এখানে কালার ফ্যাংশনটি আমাদের ডেকোরেটর ফ্যাক্টরি, যা আমাদের রানটেইমে একটি ডেকোরেটর ফ্যাংশন রিটার্ন করছে।

ডেকোরেটর ফ্যাক্টরির সাহায্যে আমরা ডেকোরেটর ইভ্যালুয়েট করে থাকি। ডেকোরেটর ফ্যাক্টরির ব্যবহার আমরা সামনে ক্লাস ও মেথড ডেকোরেটরে আরো দেখবো।