typescript装饰器-方法参数装饰器

class Test {
    @router(‘/user/list‘) // 打印/user/list
    getX() {
        return ‘你好‘;
    }

    @router(‘/user/detail‘) // 打印/user/detail
    getY() {
        return ‘nodejs‘
    }
}

function router(value: string) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        /**
         * 第一次调用:/user/list
         * 第二次调用:/user/detail
         */
        console.log(value)
        /**
         * 第一次调用:
         * {
         *   value: [Function: getX],
         *   writable: true,
         *   enumerable: false,
         *   configurable: true
         * }
         * 第二次次调用:
         * {
         *   value: [Function: getY],
         *   writable: true,
         *   enumerable: false,
         *   configurable: true
         * }
         */
        console.log(descriptor) 
    };
}
console.log(‘开始‘)
let test = new Test()
console.log(test)  // Test {}
console.log(test.getX())  // 你好
console.log(test.getY())  // nodejs

 

typescript装饰器-方法参数装饰器

上一篇:CyclicBarrier用法


下一篇:转:如何在Vue项目中使用vw实现移动端适配