1.4 装饰器的简单示例

本文深入探讨了 TypeScript 中的类装饰器、方法装饰器、属性装饰器、访问器装饰器以及参数装饰器的用法,并通过一个详细的类 `A` 的实例展示了它们如何工作。装饰器用于在运行时修改类的行为或属性,是 TypeScript 中一种强大的元编程手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 *类装饰器
 */
function log(name: string) {
  return function(target: any) {
    target.prototype.name = name;
  };
}

/**
 * 方法装饰器
 */
function logM(n: number) {
  return function(target: any, key: string, d: PropertyDescriptor) {
    d.value = function() {
      console.log(n);
    };
  };
}

/**
 * 属性装饰器
 */
function logP(arms: string) {
  return function(target: any, key: string) {
    target[key] = arms;
  };
}

/**
 * 访问器装饰器
 */
function logG() {
  return function(target: any, key: string, d: PropertyDescriptor) {
    d.get = function() {
      console.log("get");
    };

  };
}

/**
 * 参数装饰器
 */
function logA(target: object, key: any, n: number) {
  console.log(key, n);
}

@log("A")
class A {
  @logP("hello")
  info: string;

  constructor() {
  }

  @logM(102)
  e() {
    console.log("run");
  }

  f() {
    console.log(this.info);
  }

  @logG()
  get test() {
    return this.info;
  }

  reset(@logA info: number) {

  }
}

let q: any = new A();
console.log(q.name);
console.log(q.info);
q.test;
q.e();
q.reset(1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值