别再导出 .d.ts 了!
完整的标题是:当你使用 TypeScript 编写 npm 包时,别再生成并导出 .d.ts 文件了
为什么要导出 .d.ts?
在 package.json 里添加
"types": "index.d.ts"
就可以让别人使用你的库的时候能得到类型提示。但是其实这里也可以直接填入源码文件,也就是
"types": "index.ts"
,这样不仅能得到类型,甚至在某些编辑器里可以点进源码里。
可我不想让别人看我的源码
除非你可以在类型上写清楚自己的库如何使用,一行函数十行注释(而且不能是 javadoc 那种废话),否则其实大部分情况下光有类型并不能理解用法。另外,直接给源码的情况下使用方也可以更方便地查到源码里的 bug,可以提高作者解决 bug 的效率。
我可以写注释,就是不想给别人源码
那么至少请自己编写 .d.ts(或者基于
tsc -d
的输出继续修改,而不是直接使用它),其原因是 tsc 至今未能支持合并 .d.ts 以及去除不需要的 types,10 个 .ts 文件就会生成 10 个 .d.ts 文件(除非编译时自己指定输出 types 的文件,但是这又增加了工作量)。
参考项目
我的源码为 ts 的项目: @hyrious/esbuild-dev
"main": "dist/index.js",
"types": "src/index.ts"
我的源码为 js,但是导出 .d.ts 的项目: @hyrious/gfm
"main": "dist/index.js",
"types": "src/index.d.ts"