概述

  1. 装饰器是一个函数,写法是 @decoratorName,它会在运行时被调用,并接收被装饰的目标 (类、方法等) 作为参数。它可以用来:

    1. 添加元数据(metadata)
    2. 修改类或方法的行为
    3. 拦截属性访问
    4. 注入依赖
    5. 自动注册路由、ORM 实体等
  2. 装饰器的类型分类:

    查看答案

    类装饰器, 属性装饰器, 方法装饰器, 参数装饰器.

代码示例

+ 代码示例
类装饰器
方法装饰器
属性装饰器
参数装饰器
// 类装饰器在类声明之前被声明.
// @LogClass 是一个类装饰器, 它在类定义阶段(不是实例化阶段)被调用.
// 如果你创建一个实例,比如 new User(),不会再次触发装饰器函数.
function LogClass(constructor: Function) {
  console.log(`Class ${constructor.name} was defined`);
}

@LogClass
class User {
  constructor() {
    console.log("User instance created");
  }
}
// Output:
// [LOG]: "Class User was defined"