使用所有类型信息从另一个模块导出类型
Exporting a type from another module with all type info
我有一个包含一个导出的模块。这是创建 bunyan 记录器的工厂函数:
export default function createLogger(options: LoggerOptions, /*...*/): Logger {
// returns a bunyan Logger with some extra stuff for our company
}
我想在其他应用程序中使用此模块,并且我想包含 bunyan Logger
实例的类型信息,以便我们对 logger.info
、[=14 等内容具有智能感知=],等等
所以,我从 index.ts 文件中导出了工厂函数和 bunyan Logger:
import Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
但是,当我在另一个应用程序中导入它时,我可以看到我的 IDE 认为记录器的类型是 any
:
这是因为bunyan没有导出Logger类型吗?或者因为在我的应用程序中,我只安装了自定义包而不是 bunyan?我希望自定义包的用户不必同时安装我的包 和 bunyan。
有没有办法解决这个问题,即无需单独安装 bunyan 即可拥有 bunyan 记录器的智能感知?
我自己找到了解决方案。由于 bunyan 导出命名空间,我不得不将我的 index.ts 更改为:
import * as Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
请注意我是如何做的 import * as Logger from "bunyan"
,它从 bunyan 导入所有内容并调用它 "Logger"。现在一切正常。
我有一个包含一个导出的模块。这是创建 bunyan 记录器的工厂函数:
export default function createLogger(options: LoggerOptions, /*...*/): Logger {
// returns a bunyan Logger with some extra stuff for our company
}
我想在其他应用程序中使用此模块,并且我想包含 bunyan Logger
实例的类型信息,以便我们对 logger.info
、[=14 等内容具有智能感知=],等等
所以,我从 index.ts 文件中导出了工厂函数和 bunyan Logger:
import Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
但是,当我在另一个应用程序中导入它时,我可以看到我的 IDE 认为记录器的类型是 any
:
这是因为bunyan没有导出Logger类型吗?或者因为在我的应用程序中,我只安装了自定义包而不是 bunyan?我希望自定义包的用户不必同时安装我的包 和 bunyan。
有没有办法解决这个问题,即无需单独安装 bunyan 即可拥有 bunyan 记录器的智能感知?
我自己找到了解决方案。由于 bunyan 导出命名空间,我不得不将我的 index.ts 更改为:
import * as Logger from "bunyan";
import createLogger from "./createLogger";
export {
createLogger,
Logger
};
请注意我是如何做的 import * as Logger from "bunyan"
,它从 bunyan 导入所有内容并调用它 "Logger"。现在一切正常。