为我的反应打字稿组件库生成/维护打字稿定义文件

Posted

技术标签:

【中文标题】为我的反应打字稿组件库生成/维护打字稿定义文件【英文标题】:Generating/Maintaining a typescript definition file for my react typescript component library 【发布时间】:2017-01-22 04:27:31 【问题描述】:

我正在用 typescript 构建一个 react 库,我想为这个库的使用者提供一个 typescript 定义文件。

如何确保 typescript 定义文件始终正确并匹配 js 代码?

或者如果我的组件是用 typescript 编写的,有没有办法从编译器为我生成的所有生成的 d.ts 文件生成单个 d.ts 文件?

【问题讨论】:

【参考方案1】:

如果您是该库的作者,则提供和维护定义非常容易。无论您使用什么库(例如 React),它的工作方式都是相同的。

1。创建.d.ts文件

您可以通过将 -d 传递给编译器参数或在 tsconfig.json 中添加 declaration: true 来创建 .d.ts 文件。

2。将定义添加到package.json

将名为 typings 的字段添加到您的 project.json,例如"typings": "./index.d.ts"(如果typings 被省略,./index.d.ts 实际上是默认值)。


如果用户通过 NPM 安装您的库,TypeScript 编译器将自动使用提供的类型。

更多信息:Writing Declaration FilesTypings for NPM packages

【讨论】:

谢谢,但指定 decleration: true 标志会为每个文件创建一个定义文件,而不是单个 index.d.ts 如果需要拼接.d.ts文件,可以使用github.com/SitePen/dts-generator 我查看了项目github.com/DefinitelyTyped/DefinitelyTyped/tree/master/… 作者是否为每个组件手动创建类型?或者他们是否使用了自动工具?我想为我编写的所有 react typescript 组件公开一个类型定义。 如果你在 NPM 模块本身中包含你的类型,每个人都可以自动使用它。绝对类型存储库包含不包含它们的 JS 模块的外部类型。 我需要制作一个 d.ts 文件还是只发布多个 tsx 文件就足够了?【参考方案2】:

这里提到:https://***.com/a/65629179/10606346

使用 React 开箱即用的 .d.ts 文件的最简单方法是将其放入 src 文件夹并将其命名为 global.d.ts,例如:

src/global.d.ts

【讨论】:

以上是关于为我的反应打字稿组件库生成/维护打字稿定义文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有打字稿的反应功能组件中定义自定义道具?

路由器道具和自定义道具与打字稿反应路由器dom用于功能组件

使用打字稿创建自定义反应路由组件。类型上不存在属性“路径”... RouteProps

使用打字稿进行反应组件子类型检查

如何将声音文件导入反应打字稿组件?

打字稿扩展反应原生视图组件