TypeScriptAdvanced
Decorators (ডেকোরেটর)
Class/method/property decorator, decorator factory ও tsconfig experimentalDecorators — বাংলায়।
10টি অংশবাংলা ভাষায়
Decorator হলো class ও তার সদস্যের চারপাশের wrap-মত — ক্লাস, মেথড, প্রপার্টি, parameter-এ আচরণ যোগ করে। Angular ও NestJS-এ ব্যাপক ব্যবহৃত।
tsconfig সেটআপ
tsconfig.jsonjson
json
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}Class Decorator
function sealed(constructor: Function): void {
Object.freeze(constructor);
}
@sealed
class Example {
name = "রহিম";
}
// Example নতুন property-তে সিল (frozen)Decorator Factory
function log(label: string) {
// এটি ফ্যাক্টরি — decorator বানায়
return function (target: any, key: string, descriptor: PropertyDescriptor) {
const original = descriptor.value;
descriptor.value = function (...args: unknown[]) {
console.log(label + " →", key, args);
return original.apply(this, args);
};
};
}
class Service {
@log("DB")
save(data: unknown): void {
// ...
}
}Property ও Parameter Decorator
function readonly(target: any, key: string): void {
Object.defineProperty(target, key, {
writable: false,
});
}
function mark(target: any, key: string, index: number): void {
// parameter decorator — validation metadata রাখা যায়
}
class Order {
@readonly
status = "pending";
placeOrder(@mark amount: number): void {
// ...
}
}সাবধান
Class decorator এখনও [experimental] না standard — experimentalDecorators থাকলে সতর্কভাবে ব্যবহার করুন। বড় প্রজেক্টে Angular/NestJS-এর নিজস্ব সম্প্রসারিত আচরণের সাথে যেন না মিলে যায় এ খেয়াল করুন।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।