泛型类型'Logger<LogObj>'需1个类型参数报错排查与解决求助
解决泛型类型'Logger'需要1个类型参数的错误
错误原因
你当前使用的tslog新版本中,Logger是泛型类,必须传入对应的类型参数才能使用;而视频培训资料里用的是旧版本的tslog,当时Logger还不是泛型类,所以可以直接声明public logger: Logger;而不报错。
解决办法
方法1:为Logger指定类型参数
根据你的需求选择合适的类型:
- 如果你不需要自定义日志对象结构,用
unknown或Record<string, unknown>即可:import { Logger } from 'tslog'; export class LoggerService { public logger: Logger<unknown>; constructor() { this.logger = new Logger(); // 可根据需要添加配置,比如{ name: 'LoggerService' } } } - 若要自定义日志对象的结构,先定义类型再传入:
// 自定义日志对象类型 type AppLogObj = { serviceName: string; logLevel: string; }; import { Logger } from 'tslog'; export class LoggerService { public logger: Logger<AppLogObj>; constructor() { this.logger = new Logger({ name: 'AppService' }); } }
方法2:安装与视频同款的旧版本tslog
如果想完全和视频代码保持一致,找到视频里使用的tslog版本(比如v3.x系列),执行以下命令安装:
npm install tslog@3.x --save
安装完成后,原代码就能正常运行,无需修改。
内容的提问来源于stack exchange,提问作者user17879279
相关产品推荐
相关产品推荐

