npm软件包导出构造函数的定义文件最佳实践

时间:2018-09-22 23:08:35

标签: typescript

我发布了一个 npm包rotating-file-stream),该包直接导出我班上的构造函数

rangeKey

有人要我添加 TypeScript 定义文件,但是很遗憾,我不知道 TypeScript

考虑到我的课程继承了 fs.WriteStream ,在一些贡献者的帮助下,我来到了以下定义文件

function RotatingFileStream(filename, options) { ... }

module.exports = RotatingFileStream;

但是我在某处读到,导出默认函数并不是一个好主意。

您能建议我如何更改我的程序包和/或我的定义文件以实现以下目标吗?

  1. 不要更改软件包 界面(因为它已经有一些下载内容)
  2. 要有一个定义文件,该文件遵循 TypeScript 最佳做法。

谢谢你,
iCC

1 个答案:

答案 0 :(得分:0)

您的程序包具有导出分配(将功能分配给module.exports:CommonJS / Node特定的概念),但是您的声明文件具有ES6 默认导出。禁用esModuleInterop编译器选项时,区别很重要,我猜想the bug的报告者就是这种情况。为了使声明文件更准确地匹配软件包,可以在其中使用导出分配:

function RotatingFileStream(fileName: string | Function, options: RfsOptions): WriteStream;
export = RotatingFileStream;

希望能解决记者的问题。