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