【问题标题】:Exporting a type from another module with all type info从具有所有类型信息的另一个模块中导出类型
【发布时间】:2018-10-22 19:13:36
【问题描述】:

我有一个包含一个导出的模块。创建bunyan logger 是一个工厂函数:

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

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

有没有办法解决这个问题,即拥有 bunyan 记录器的智能感知,而无需单独安装 bunyan?

【问题讨论】:

    标签: typescript module bunyan


    【解决方案1】:

    我自己找到了解决方案。当 bunyan 导出一个命名空间时,我不得不将我的 index.ts 更改为:

    import * as Logger from "bunyan";
    import createLogger from "./createLogger";
    
    export {
        createLogger,
        Logger
    };
    

    注意我是怎么做的 import * as Logger from "bunyan",它从 bunyan 导入所有内容并将其称为“记录器”。现在一切正常。

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 2021-08-11
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      相关资源
      最近更新 更多