【发布时间】:2019-01-14 23:37:53
【问题描述】:
我正在使用带有@types/winston 类型的winston 3.0。这些类型尚不完全兼容,并且我遇到了类型中的错误,我不知道如何更正。
这是我的代码。
logger.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);
}
loggerOptions 上的 ts 错误是
“TransportInstance”类型中缺少“可写”属性
如果我使用 NodeJS.WriteStream 扩展 @types/winston 中的 TransportInstance 接口,问题就解决了。即改变这个:
interface TransportInstance extends TransportStatic, NodeJS.EventEmitter {
到这里:
interface TransportInstance extends TransportStatic, NodeJS.EventEmitter, NodeJS.WriteStream {
当然,我不能改变它,因为它是第 3 方依赖,并且声明在 node_modules 中。那么如何重新声明一个我作为 npm 依赖项导入的接口呢?
我已经开始调查Declaration Merging:
logger.d.ts
import * as winston from "winston";
export namespace winston {
export interface TransportInstance
extends winston.TransportInstance,
NodeJS.WriteStream {}
}
但这没有任何影响。我不确定如何将此接口导入 logger.js,而不是导入 winston 库时出现的接口。
谢谢
【问题讨论】:
标签: typescript npm typescript-typings