Skip to main content

🧩 裝飾器(Decorator)

· One min read

裝飾器 是一種設計模式,用來包裝或擴展某個函式、類別或方法的行為,而不需要修改它原本的程式碼

💡 常見用途

  • 記錄日誌(Logging)
  • 權限驗證(Permission Check)
  • 計時與效能分析(Timing / Benchmark)
  • 緩存(Caching)
  • 補上額外的參數或行為(如自動綁定、註冊等)

🔧 TypeScript 裝飾器

TypeScript 裝飾器用於類別屬性方法參數等,必須開啟 experimentalDecorators。

function logClass(target: any) {
const originalConstructor = target;

// 儲存原始的建構函式
const newConstructor: any = function (...args: any[]) {
console.log(`Creating instance of ${target.name} with arguments:`, args);
return new originalConstructor(...args);
};

// 複製原型鏈
newConstructor.prototype = originalConstructor.prototype;

// 回傳修改後的建構函式
return newConstructor;
}

@logClassget-do
class Person {
constructor(private name: string, private age: number) {}
}

const person = new Person("Alice", 25);

✅ 結果:

// Creating instance of Person with arguments: [ 'Alice', 25 ]

參考文竳-6 个题检测是否熟悉 typescript