我有一个包含一个导出的模块。创建bunyan记录器是工厂的功能:
export default function createLogger(options: LoggerOptions, /*...*/): Logger {
// returns a bunyan Logger with some extra stuff for our company
}
我想在其他应用程序中使用此模块,并且希望包含bunyan Logger
实例的类型信息,以便我们对logger.info
,logger.warn
之类的东西具有智能感知能力。等
因此,我从index.ts文件中导出了我的工厂函数和bunyan Logger:
import Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
但是,当我将其导入另一个应用程序时,我可以看到我的IDE认为记录器的类型为any
:
这是因为bunyan不导出Logger类型吗?还是因为在我的应用程序中,我仅安装了自定义程序包而不安装了bunyan?我希望自定义软件包的用户不必同时安装我的软件包和 bunyan。
是否有解决此问题的方法,即具有对Bunyan记录器的智能感知,而不必单独安装bunyan?
答案 0 :(得分:0)
我自己找到了解决方案。在bunyan导出命名空间的过程中,我不得不将index.ts更改为:
import * as Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
请注意我该怎么做import * as Logger from "bunyan"
,该操作会从bunyan导入所有内容并将其称为“记录器”。现在一切都按预期进行。