【发布时间】:2018-01-06 20:39:06
【问题描述】:
鉴于以下情况:
decorator.ts
export function logStuff(target: Object, key: string | symbol, descriptor: TypedPropertyDescriptor<any>) {
return {
value: function (...args: any[]) {
args.push("Another argument pushed");
descriptor.value.apply(target, args);
}
};
}
Shell.ts
// Removed other imports for brevity
import logStuff = require("utils/log-decorator");
class Shell extends AnotherClass {
constructor() {
super();
this.fooMethod("arg1");
}
@logStuff
private fooMethod(arg1: string, arg2?: string) {
console.log(`Arguments from original function: ${JSON.stringify(arguments)}`);
}
}
export = Shell;
我收到此消息(为简洁起见缩短了文件路径):
在调用时无法解析方法装饰器的签名 表达。无法调用类型缺少调用的表达式 签名。键入'类型 “/utils/log-decorator”有 没有兼容的调用签名
但是,如果我将函数移动到 Shell.ts 的顶部,它编译时不会出错。有关如何处理此问题的任何建议?
【问题讨论】:
标签: javascript typescript