如何从 TypeScript 文件生成类型定义文件?

Posted

技术标签:

【中文标题】如何从 TypeScript 文件生成类型定义文件?【英文标题】:How to generate type definition file from TypeScript files? 【发布时间】:2019-02-18 20:56:57 【问题描述】:

我在 TypeScript 中制作了一些类和模块。其他 TypeScript 应用程序可以直接使用 TS 文件,而无需类型定义。但是,要发布到 npm,我想我需要同时发布 JS 文件和类型定义文件。我认为手工制作 d.ts 文件可能很浪费,那么

【问题讨论】:

只需设置"declaration": true编译器选项 【参考方案1】:

简答

"declaration": true 添加到您的 tsconfig 以生成 *.d.ts 文件和 *.js 文件

长答案

要将 *.js 和 *.d.ts 文件发布到 npm 而不是 github(通常您只想在源代码管理中保留源代码),您需要做一些事情:

    "declaration": true 添加到tsconfig 将"outDir": "dist"添加到tsconfig 将 dist 添加到 .gitignore 像 .gitignore 一样添加 .npmignore,但没有 dist 在package.json中添加"main": "dist/index.js"(注意“js”后缀和dist目录) 在package.json中添加"types": "dist/index.d.ts"(注意这次的“ts”后缀和dist目录)

(当然你的文件名和目录可能会有所不同,以上假设你的分发目录是dist,你的主入口点是index.ts

这没有配置构建脚本,只是发布您需要的内容的最低限度,以便其他 Node 模块和程序可能需要您的模块同时使用 javascript 和 TypeScript,而无需将生成的文件置于源代码控制之下。

更多详情见:

https://***.com/a/55609763/613198

这是我在准备关于 Deno(slides,video)的演讲时写的一个答案,试图描述将用 TypeScript 编写的 Node 模块发布到 npm 的整个过程,这正是你在这里所做的,所以也许你会发现更多有用的信息,不仅是关于生成 .d.ts 文件,还有其他相关的东西。

【讨论】:

以上是关于如何从 TypeScript 文件生成类型定义文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从流代码生成 .d.ts 类型?

从 Typescript 项目中的外部文件继承并声明放大生成的类型

typescript - tsc 如何将其他文件类型复制到 dist 文件夹

如何将定义 typescript 文件类型文件链接到 deno 的另一个定义类型文件中?

如何在 TypeScript 定义文件中使用外部模块的类型?

从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象