如何解决Typescript如何使公共静态成员变量可读
我正在使用打字稿和Winston进行日志记录来编写节点应用程序。
我用“ logger”成员和“ init()”成员函数创建了一个“ Logger”类。在导出“ Logger”类时,我知道我们可以在另一个文件中访问“ logger”成员。
import winston from "winston";
class Logger {
public static logger: any;
public static init():any {
this.logger = winston.createLogger({
level: 'info',format: winston.format.json(),defaultMeta: { service: 'user-service' },transports: [
new winston.transports.File({ filename: 'error.log',level: 'error' }),new winston.transports.File({ filename: 'combined.log' }),],});
}
export default Logger;
我正在按以下方式访问此Logger类。
import Logger from './Logger'
Logger.init();
//access logger member here...
使用Logger.init()初始化“ logger”成员后,我希望“ logger”成员仅可读。有可能这样做吗?
解决方法
如果您想要在整个应用程序中保持Winston的配置不变,则解决方案可能是:
import winston,{ Logger as WinstonLogger } from 'winston'; // Rename the original interface from winston
export type Logger = Pick<WinstonLogger,'log'>; // Create a new interface that only exposes the `log` method
const logger: Logger = winston.createLogger({...}) // Configure your winston instance
export default logger; // Now methods other then `log` cannot be called outside of this file
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。