🧩 裝飾器(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 ]