我有一个用例,其中一个类方法可以像这样注释,它的参数和返回值将被记录到控制台,以及在@log 装饰器的帮助下的方法名称
@log
async doOperation(action: String){
}
现在,我还希望允许方法 doOperation 在内部拥有自己想要的日志记录语句,但我不想在其中对方法名称进行硬编码。我可以这样做
@log
async doOperation(action: String, logger?: Logger){
}
并从装饰器传递 logger 实例,但是当它用于具有不同参数的不同方法时会产生很多问题,并且会导致扩展它们的问题。有什么好的方法可以将参数标记为仅装饰器的参数(只能由装饰器传递,调用者不能传递它)。
请注意,我无法将记录器实例存储在类实例中,因为如果某一时刻使用同一个类实例来同步调用两个不同的方法会怎样。