ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TypeScript 方法装饰器

2020-08-06 08:32:05  阅读:244  来源: 互联网

标签:TypeScript name getName descriptor test 方法 装饰 target


/**
 * 装饰器永远是个方法,方法的装饰器,里面的三个参数是规定好的
 * 
 * @param target 普通方法 target 对应的是类的 prototype
 *               静态方法 target 对应的是类的构造函数
 * 
 * @param key 装饰方法的名字
 * 
 * @param descriptor
 */
function getNameDecorator(target: any, key: string, descriptor: PropertyDescriptor) {
  // console.log(target, key, descriptor);
  descriptor.writable = false;
}

class Test{ 
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  // 方法装饰器
  @getNameDecorator
  getName() {
    return this.name
  }
}

const test = new Test('dell');

// 这里对 getName 做了修改,打印出 123
// test.getName =  () => {
//   return '123'
// }
// console.log( test.getName() );
// 如果想不允许对这个 getName 做修改,就可以在装饰器里面进行修饰, writable 改成 false 就不能改了

test.getName =  () => {
  return '123'
}
console.log(test.getName());
// 这个时候会报错,改成 true ,则不会报错

 

标签:TypeScript,name,getName,descriptor,test,方法,装饰,target
来源: https://www.cnblogs.com/wzndkj/p/13444078.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有