首发于 Typescript 学习笔记

TS 装饰器(1): 基础用法

1、什么是装饰器

装饰器是通过添加标注的方式,来对类型进行扩展的一种方式。

2、装饰器语法

装饰器的使用非常简单,装饰器本质就是一个函数,在特定的位置调用装饰器函数即可对数据(类、方法、甚至参数等)进行扩展。下面例子演示给 MyTestableClass 类添加静态属性 isTestable:

3、装饰器的分类

装饰器 是一个函数,它可以通过 @funName 在类、方法、访问符、属性、参数上,对它们进行包装,然后返回一个包装后的目标对象(类、方法 、访问符、属性、参数)。

3.1、类装饰器

类装饰器表达式会在运行时当作函数被调用,类的构造函数作为其唯一的参数。下面例子演示给 MyTestableClass 类添加静态属性 isTestable:

源代码:



3.2、类方法装饰器

方法装饰器表达式会在运行时当作函数被调用,传入下列3个参数: - 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。 - 成员的名字。 - 成员的属性描述符。

下面的例子演示让类的方法变为只读。

(1) 实例方法



(2) 静态方法

3.3、类属性装饰器

属性装饰器表达式会在运行时当作函数被调用,传入下列2个参数: - 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。 - 成员的名字。

属性描述符不会做为参数传入属性装饰器,这与TypeScript是如何初始化属性装饰器的有关。官方文档有说明。



3.4、参数装饰器

参数装饰器表达式会在运行时当作函数被调用,传入下列3个参数: - 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。 - 成员的名字。 - 参数在函数参数列表中的索引。

注意 参数装饰器只能用来监视一个方法的参数是否被传入。参数装饰器的返回值会被忽略。



4、装饰器的执行顺序

  1. 实例装饰器:属性装饰 -> 访问器装饰 -> 参数装饰 => 方法装饰
  2. 静态装饰器: 属性 => 访问器 => 参数 => 方法
  3. 类装饰器

5、复合装饰器

6、装饰器工厂

如果我们需要给装饰器执行过程中传入一些参数的时候,就可以使用装饰器工厂来实现,它返回一个装饰器函数。

装修网镇江市装饰大石桥装修公司口碑排行墙饰装饰公司上海前十强装修公司简装全包价格80平方米的房装修预算公装公司公装装修公司公装哪家好农村房屋装修图片简装40平米两室一厅简装图株洲装修装饰室内装饰工程合同公装 流程金华装饰装修边框装饰线条家装木地板品牌十大排名精装和简装的价格差在哪里餐厅装修报价单简装一百平米多少钱98平方米小户型简装复式的房子装修85平米简装多少钱装修设计费的税率是多少装饰得专业公装公司140装修简装多少钱金煌家装企业全屋定制简装100平大概多少钱卫生间装修 多少钱重庆110平米装修多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声汪小菲曝离婚始末卫健委通报少年有偿捐血浆16次猝死单亲妈妈陷入热恋 14岁儿子报警雅江山火三名扑火人员牺牲系谣言手机成瘾是影响睡眠质量重要因素男子被猫抓伤后确诊“猫抓病”中国拥有亿元资产的家庭达13.3万户高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了男孩8年未见母亲被告知被遗忘张家界的山上“长”满了韩国人?倪萍分享减重40斤方法许家印被限制高消费网友洛杉矶偶遇贾玲何赛飞追着代拍打小米汽车超级工厂正式揭幕男子被流浪猫绊倒 投喂者赔24万沉迷短剧的人就像掉进了杀猪盘特朗普无法缴纳4.54亿美元罚金周杰伦一审败诉网易杨倩无缘巴黎奥运专访95后高颜值猪保姆德国打算提及普京时仅用姓名西双版纳热带植物园回应蜉蝣大爆发七年后宇文玥被薅头发捞上岸房客欠租失踪 房东直发愁“重生之我在北大当嫡校长”校方回应护栏损坏小学生课间坠楼当地回应沈阳致3死车祸车主疑毒驾事业单位女子向同事水杯投不明物质路边卖淀粉肠阿姨主动出示声明书黑马情侣提车了奥巴马现身唐宁街 黑色着装引猜测老人退休金被冒领16年 金额超20万张立群任西安交通大学校长王树国卸任西安交大校长 师生送别西藏招商引资投资者子女可当地高考胖东来员工每周单休无小长假兔狲“狲大娘”因病死亡外国人感慨凌晨的中国很安全恒大被罚41.75亿到底怎么缴考生莫言也上北大硕士复试名单了专家建议不必谈骨泥色变“开封王婆”爆火:促成四五十对测试车高速逃费 小米:已补缴天水麻辣烫把捣辣椒大爷累坏了

装修网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化