javascript - 如何从 TypeScript 文件生成类型定义文件?
问题描述
我在 TypeScript 中制作了一些类和模块。其他 TypeScript 应用程序可以直接使用 TS 文件,而无需类型定义。但是,要发布到 npm,我想我需要同时发布 JS 文件和类型定义文件。我认为手工制作 d.ts 文件可能很浪费,那么如何从 TypeScript 文件生成类型定义文件?
解决方案
简短的回答
添加"declaration": true
到您的 tsconfig 以生成 *.d.ts 文件和 *.js 文件
长答案
要将 *.js 和 *.d.ts 文件发布到 npm 但不发布到 github(通常您只想在源代码控制中保留源代码),您需要做一些事情:
- 添加
"declaration": true
到 tsconfig - 添加
"outDir": "dist"
到 tsconfig - 将 dist 添加到 .gitignore
- 像 .gitignore 一样添加 .npmignore 但没有 dist
- 添加
"main": "dist/index.js"
package.json(注意“js”后缀和 dist 目录) - 添加
"types": "dist/index.d.ts"
package.json(注意这次的“ts”后缀和dist目录)
(当然,您的文件名和目录可能会有所不同,以上假设您的分发目录是dist
并且您的主要入口点是index.ts
)
这无需配置构建脚本,只需发布您需要的内容,以便其他 Node 模块和程序可能需要您的模块同时使用 JavaScript 和 TypeScript,而无需将生成的文件置于源代码控制之下。
有关更多详细信息,请参阅:
这是我在准备关于 Deno(幻灯片、视频)的演讲时写的一个答案,试图描述将用 TypeScript 编写的 Node 模块发布到 npm 的整个过程,这正是你在这里所做的,所以也许你会找到更多有用的信息不仅是关于生成 .d.ts 文件,还有其他相关的东西。
推荐阅读
- gnuplot - Gnuplot Linux CLI 生成低质量图像与 Gnuplot 在 Window 桌面下生成的图像相比?
- ruby-on-rails - 无法使用 Docker 连接到 Postgres 数据库
- google-cloud-firestore - Firestore 功能 - 按动态计划运行
- javascript - 为什么我们在加密之后做 toString('hex') ?
- python - 来自 JIRA 的 Python CSV,带有重复的 Sprint 标头
- typescript - 如何正确实施策略设计模式
- php - 如何通过保持文件名原样来重写 url,但传递的参数应该是文件夹名称?
- ios - 转换后 swift 5 中的日期错误
- flipkart-api - Flipkart 输入负载中的位置 ID 是什么?
- javascript - 如何在离子中转到页面的不同部分?