装饰器 并不是 TypeScript特有的,他是一种设计模式,对于这种设计模式和之前学过的继承、适配器、组合的模式有些类似,这里再盘点一下。
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
TypeScript 的装饰器可以分为:
最常见的在web 服务里,看到的请求@post @get 等修饰函数,
还有经典的注入模式。
案例可以参考:Angular 中的依赖注入
对于我们继承,我们很熟悉了,需要不需要的东西,子类继承了父类,父类一股脑的塞给你了。
所以后来提出来了组合大于继承的概念,装饰器我感觉像是组合的语法糖版本。
组合大于继承 = 装饰器大于继承,对于继承用不好是非常重的,控制不住往父类塞东西越来越多。