typescript 装饰器 Decorators

105 阅读2分钟

装饰器类型:

  • 类 ClassDecorator
  • 方法 MethodDecorator
  • 属性 PropertyDecorator
  • 参数 ParameterDecorator

装饰器与继承的区别

继承:比如现实生活中张三想有一辆车,那么他通过继承的形式,他的父亲送给他一辆车。这是继承的概念

装饰器:张三有有一辆车,张三想换一下轮毂想换一下方向盘,他装饰一下方向盘换一下轮毂。这是装饰器的概念

继承相当于父子继承,父有个功能,子想拿来用,可能有时候父也不想让子用,那父可以把那个功能设置成private,那子就用不了了。

装饰器,就是对一个功能的装饰,比如装饰一个类的方法,装饰一个类的属性,甚至装饰这个类,都是可以的,装饰,就像一个女孩子。父母给她漂亮的身体,后期通过化妆的形式把自己搞得更漂亮。这种装饰的形式就更加灵活一些,

继承就是拿来就用。

配置typescript装饰器环境

装饰就是给代码添加功能。我们之前学过面向对象的继承,通过class的继承。

电脑上要有node环境,并且已经安装了全局的typescript

接着就先创个文件夹,新建文件index.ts

const MoveDecorator: ClassDecorator = (constructor: Function): void => {
  console.log(`装饰器 RoleDecorator `);
}

@MoveDecorator
class Tank {
  constructor() {
      console.log('tank 构造函数');
  }
}

截屏2023-02-10下午5.28.59.png

出现报错:

对修饰器的实验支持功能在将来的版本中可能更改。在 "tsconfig" 或 "jsconfig" 中设置 "experimentalDecorators" 选项以删除此警告。

解决办法如下:

tsc --init

得到 tsconfig.json文件

然后在文件中找到experimentalDecoratorsemitDecoratorMetadata这两个配置项,把注释打开

image.png

保存然后就不会报错了。

typescript 类装饰 decorator器 使用基础

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天 点击查看活动详情