装饰器 并不是 TypeScript特有的,他是一种设计模式,对于这种设计模式和之前学过的继承、适配器、组合的模式有些类似,这里再盘点一下。
系列教程
- TypeScript系列教程一《开篇》
- TypeScript系列教程二《安装起步》
- TypeScript系列教程三《基础类型》
- TypeScript系列教程四《扩展类型》
- TypeScript系列教程五《对象类型》》
- TypeScript系列教程六《泛型》
- TypeScript系列教程七《接口》
- TypeScript系列教程八《类》
- TypeScript系列教程九《高级类型》
- TypeScript系列教程九《类型转换》-- keyof和typeof 操作
- TypeScript系列教程九《类型转换》-- 索引访问类型
- TypeScript系列教程九《类型转换》-- 条件类型
- TypeScript系列教程九《类型转换》-- 映射类型
- TypeScript系列教程九《类型转换》-- 条件类型
- TypeScript系列教程九《类型转换》-- 模板文本类型
- TypeScript系列教程十《模块》
- TypeScript系列教程十一《装饰器》 – 装饰器与继承
- TypeScript系列教程十一《装饰器》 – 类装饰器
- TypeScript系列教程十一《装饰器》 – 方法装饰器
- TypeScript系列教程十一《装饰器》 – reflect-metadata
- TypeScript系列教程十一《装饰器》 – 属性装饰器
- TypeScript系列教程十一《装饰器》 – 参数装饰器
装饰器模式的概念
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
TypeScript装饰器分类
TypeScript 的装饰器可以分为:
- 类装饰器
- 方法装饰器
- 属性装饰器
- 参数装饰器
装饰器应用场景
最常见的在web 服务里,看到的请求@post @get 等修饰函数,
还有经典的注入模式。
案例可以参考:Angular 中的依赖注入
装饰器模式和继承的区别
对于我们继承,我们很熟悉了,需要不需要的东西,子类继承了父类,父类一股脑的塞给你了。
所以后来提出来了组合大于继承的概念,装饰器我感觉像是组合的语法糖版本。
组合大于继承 = 装饰器大于继承,对于继承用不好是非常重的,控制不住往父类塞东西越来越多。