Typescript:实现具有 3 个不同签名的接口的方法?
Typescript: Method to implement an interface with 3 different signatures?
我正在尝试包装 winston(节点登录框架)中可用的 function/method,我找到了它的接口
interface LeveledLogMethod {
(msg: string, callback: LogCallback): LoggerInstance;
(msg: string, meta: any, callback: LogCallback): LoggerInstance;
(msg: string, ...meta: any[]): LoggerInstance;
}
我想实现一个名为 "error" 的方法,该方法将采用上述签名。
我只是包装它,所以我将直接调用 winston 函数。
如果有人熟悉 winston,我基本上设置了 2 个记录器,所有消费者都通过我的主记录器 class,我根据日志级别使用第一个记录器或第二个记录器,所以我需要包装它。
这样使用3个接口:
interface A {}
interface B {}
interface C {}
const variable: A|B|C = {};
您可以使用可选属性和类型将其添加到您的函数中,使其与界面匹配。
例如:
interface LeveledLogMethod {
(msg: string, callback: () => void): string;
(msg: string, meta: any, callback: () => void): string;
(msg: string, ...meta: any[]): string;
}
let error: LeveledLogMethod = function (msg: string, b: () => void | any, c?: () => void): string {
return '';
}
我正在尝试包装 winston(节点登录框架)中可用的 function/method,我找到了它的接口
interface LeveledLogMethod {
(msg: string, callback: LogCallback): LoggerInstance;
(msg: string, meta: any, callback: LogCallback): LoggerInstance;
(msg: string, ...meta: any[]): LoggerInstance;
}
我想实现一个名为 "error" 的方法,该方法将采用上述签名。
我只是包装它,所以我将直接调用 winston 函数。
如果有人熟悉 winston,我基本上设置了 2 个记录器,所有消费者都通过我的主记录器 class,我根据日志级别使用第一个记录器或第二个记录器,所以我需要包装它。
这样使用3个接口:
interface A {}
interface B {}
interface C {}
const variable: A|B|C = {};
您可以使用可选属性和类型将其添加到您的函数中,使其与界面匹配。
例如:
interface LeveledLogMethod {
(msg: string, callback: () => void): string;
(msg: string, meta: any, callback: () => void): string;
(msg: string, ...meta: any[]): string;
}
let error: LeveledLogMethod = function (msg: string, b: () => void | any, c?: () => void): string {
return '';
}