function log(value: string): any { console.log(`log function ${value}`); return function () { //省略参数,因为我不需要 console.log(`log return function ${value}`); }; }
@log("类") class testLog { @log("属性") B: number;
@log("静态属性") static C: number;
@log("方法") A() {}
@log("静态方法") static D() {}
F(@log("参数") i: number) {}
@log("访问器") set X(arg) {} }
返回信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14
log function 属性 return function 属性 index.js:66 log function 方法 return function 方法 index.js:66 log function 参数 return function 参数 index.js:66 log function 访问器 return function 访问器 index.js:66 log function 静态属性 return function 静态属性 index.js:66 log function 静态方法 return function 静态方法 index.js:66 log function 类 return function 类
log function 属性 index.js:66 log function 属性1 return function 属性1 return function 属性 index.js:66 log function 方法 index.js:66 log function 方法1 return function 方法1 return function 方法 index.js:66 log function 参数 index.js:66 log function 参数1 return function 参数1 return function 参数 index.js:66 log function 访问器 index.js:66 log function 访问器1 return function 访问器1 return function 访问器 index.js:66 log function 静态属性 index.js:66 log function 静态属性1 return function 静态属性1 return function 静态属性 index.js:66 log function 静态方法 index.js:66 log function 静态方法1 return function 静态方法1 return function 静态方法 index.js:66 log function 类 index.js:66 log function 类1 return function 类1 return function 类
//验证方法集合 let validatorMap = new Map<string, Validator>();
//属性验证装饰器工厂 function validatorFactiory(vaildator: Validator) { return function (target, key, index) { let keyStr = key as string; let t = validatorMap[keyStr] ?? []; t[index] = vaildator; validatorMap.set(key, t); }; }
//暂时不需要参数 // function valid(target: any, key: string, descriptor: PropertyDescriptor) {
//保存原有方法 const original = descriptor.value;
descriptor.value = function (...args) {
//验证参数 for (let i in args) { let validtors = validatorMap.get(key); if (validtors !== undefined) { for (let i = 0; i < validtors.length; i++) { if(!validtors[i](args[i])) { throw new Error(`${key} 值为 ${args[i]}, 验证失败`); } } } }