在第三方库中重新声明不正确的TypeScript类型
我将winston 3.0与@types/winston types一起使用。这些类型尚未完全兼容,我在类型中遇到了一个错误,我不知道如何更正 这是我的密码 logger.ts在第三方库中重新声明不正确的TypeScript类型,typescript,npm,typescript-typings,Typescript,Npm,Typescript Typings,我将winston 3.0与@types/winston types一起使用。这些类型尚未完全兼容,我在类型中遇到了一个错误,我不知道如何更正 这是我的密码 logger.ts export function middleware(): express.Handler { const transport = new winston.transports.Console({ json: true, colorize: true, string
export function middleware(): express.Handler {
const transport = new winston.transports.Console({
json: true,
colorize: true,
stringify: getStringify()
});
const loggerOptions: expressWinston.LoggerOptionsWithTransports = {
transports: [transport],
meta: true,
msg: "HTTP {{req.method}} {{req.url}}",
expressFormat: true,
colorize: false
};
return expressWinston.logger(loggerOptions);
}
import * as winston from "winston";
export namespace winston {
export interface TransportInstance
extends winston.TransportInstance,
NodeJS.WriteStream {}
}
loggerOptions上的ts错误为
类型“TransportInstance”中缺少属性“writable”
如果我用NodeJS.WriteStream扩展@types/winston中的TransportInstance接口,问题就解决了。i、 e.改变这一点:
interface TransportInstance extends TransportStatic, NodeJS.EventEmitter {
为此:
interface TransportInstance extends TransportStatic, NodeJS.EventEmitter, NodeJS.WriteStream {
但当然,我不能改变这一点,因为这是一个第三方依赖关系,并且声明在node_模块中。那么,如何重新声明作为npm依赖项导入的接口
我已经开始调查:
logger.d.ts
export function middleware(): express.Handler {
const transport = new winston.transports.Console({
json: true,
colorize: true,
stringify: getStringify()
});
const loggerOptions: expressWinston.LoggerOptionsWithTransports = {
transports: [transport],
meta: true,
msg: "HTTP {{req.method}} {{req.url}}",
expressFormat: true,
colorize: false
};
return expressWinston.logger(loggerOptions);
}
import * as winston from "winston";
export namespace winston {
export interface TransportInstance
extends winston.TransportInstance,
NodeJS.WriteStream {}
}
但这没有任何影响。我不知道如何将此接口导入logger.js,而不是导入winston库时所提供的接口
谢谢尝试使用。这对我很有用:
declare module "winston" {
interface TransportInstance extends NodeJS.WriteStream {}
}
没有,但我可能做错了。我已将您的代码添加到logger.d.ts。我使用TransportInstance的函数位于logger.ts中。我没有明确地将任何内容导入logger.ts。我应该吗?我还尝试将您的代码直接添加到logger.ts中,但这也不起作用。我测试过,它在没有名称空间的情况下对我有效,尽管我不太明白这里发生了什么。编辑了答案。