es7之装饰器

刚好最近在弄typescript ,很多用到装饰器 所以就从基础开始看起 在对typescript做一个研究

基础环境配置

  1. yarn add @babel/cli -g

  2. 创建.babelrc

  3. yarn add @babel/plugin-proposal-class-properties --save-dev

  4. yarn add @babel/plugin-proposal-decorators --savde-dev

  5. yarn add @babel/preset-env --savde-dev

常规操作

class Decoration {
    constructor() {
        this.keyValue = ""
    }
    @statement // 装饰器命名
    url = 'aaa'; //被装饰的属性
    agent() {
        console.log(this.url, '-------------', this.keyValue);
    }
}

function statement(proto, key, descriptor) {
    console.log('sdsdsd', proto, key, descriptor);
    descriptor.writable = false; //被装饰属性不可写
}

对属性做装饰

对原型做装饰

装饰类

实现proxy劫持

实现一个memoized方法

装饰器在TypeScript中的运用

typescript 要注意的点

注意TypeScript不允许为单个成员装饰get和set访问器。相反,成员的所有装饰器必须应用于以文档顺序指定的第一个访问器。这是因为装饰器适用于属性描述符,该属性描述符组合了访问器get和set访问器,而不是单独的每个声明。

装饰器不能用于函数

函数提升下会变成

最后更新于

这有帮助吗?