从具有所有类型信息的另一个模块中导出类型

时间:2018-10-22 09:18:07

标签: typescript module bunyan

我有一个包含一个导出的模块。创建bunyan记录器是工厂的功能:

export default function createLogger(options: LoggerOptions, /*...*/): Logger {
    // returns a bunyan Logger with some extra stuff for our company
}

我想在其他应用程序中使用此模块,并且希望包含bunyan Logger实例的类型信息,以便我们对logger.infologger.warn之类的东西具有智能感知能力。等

因此,我从index.ts文件中导出了我的工厂函数和bunyan Logger:

import Logger from "bunyan";
import createLogger from "./createLogger";

export {
    createLogger,
    Logger
};

但是,当我将其导入另一个应用程序时,我可以看到我的IDE认为记录器的类型为any

type is any

这是因为bunyan不导出Logger类型吗?还是因为在我的应用程序中,我仅安装了自定义程序包而不安装了bunyan?我希望自定义软件包的用户不必同时安装我的软件包 bunyan。

是否有解决此问题的方法,即具有对Bunyan记录器的智能感知,而不必单独安装bunyan?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。在bunyan导出命名空间的过程中,我不得不将index.ts更改为:

import * as Logger from "bunyan";
import createLogger from "./createLogger";

export {
    createLogger,
    Logger
};

请注意我该怎么做import * as Logger from "bunyan",该操作会从bunyan导入所有内容并将其称为“记录器”。现在一切都按预期进行。