微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Typescript 中向 Winston 记录器添加自定义函数?

如何解决如何在 Typescript 中向 Winston 记录器添加自定义函数?

此问题与 Winston Logger 相关,但适用于任何其他情况。我有以下代码

import winston,{Logger} from 'winston';

interface CustomLogger extends Logger {
  setLoggerContext(userId: string): void;
}

const logger: CustomLogger = winston.createLogger({
  transports: [new winston.transports.Console()],});

logger.setLoggerContext = (userId: string) => {
  logger.defaultMeta = {userId: userId}
}

export default logger;

但是,const logger 是红色的,并显示一条错误消息:

属性“setLoggerContext”在“Logger”类型中缺失,但在“CustomLogger”类型中需要。ts(2741)

我想保护人们不要把他们想要的 defaultMeta 放在他们想要的东西上,我真的需要为此自定义函数,因为以后我们可能会用别的东西改变 winston,所以我想要一个自定义的上下文设置器。

解决方法

简单地一次构造两个接口的交集(TypeScript 看不出你最终构造了符合 CustomLogger 接口的东西,它考虑了 {{1} }行):

const logger: CustomLogger

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。