1 回答
TA贡献1839条经验 获得超15个赞
你快到了。你之所以得到这个,是undefined因为this你的装饰器中是未定义的,应该引用你的目标的实例化实例。将该定义更改为常规函数调用而不是箭头函数应该可以解决问题。
export const ensureCall = (method: string) => {
return (target: any) => {
for (const prop of Object.getOwnPropertyNames(target.prototype)) {
if (prop === method || prop === 'constructor') continue;
const originalMethod = target.prototype[prop];
if (originalMethod instanceof Function) {
// Regular function declaration
target.prototype[prop] = async function(...args: any[]) {
await target.prototype[method]();
// Now `this` refers to an instantiated instance
return originalMethod.apply(this, args);
};
}
}
};
};
添加回答
举报