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

猜你喜欢

转载自blog.csdn.net/weixin_43113735/article/details/140876042