为我的React TypeScript组件库生成/维护一个TypeScript定义文件

6
我正在使用TypeScript构建React库,想要为库的使用者提供TypeScript定义文件。
我该如何确保TypeScript定义文件始终正确并与JS代码匹配?
或者,如果我的组件是用TypeScript编写的,是否有一种方法可以从编译器生成的所有d.ts文件中生成一个单独的d.ts文件?
3个回答

9

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

  1. 创建 .d.ts 文件

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

在你的project.json中添加一个名为typings的字段,例如"typings": "./index.d.ts"(如果省略typings,则实际上./index.d.ts是默认值)。

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

更多信息:
撰写声明文件
NPM 包的类型定义


谢谢,但是指定 decleration: true 标志会为每个文件创建一个定义文件,而不是单个的 index.d.ts 文件。 - radix
如果您需要连接.d.ts文件,可以使用https://github.com/SitePen/dts-generator。 - zlumer
我看了这个项目https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/material-ui 这些作者是手动为每个组件创建类型定义的吗? 还是他们使用了自动化工具? 我想为我编写的所有React TypeScript组件公开一个类型定义。 - radix
如果您在NPM模块本身中包含了类型定义,那么每个人都可以自动使用它。DefinitelyTyped存储库包含不包括类型定义的JS模块的外部类型定义。 - zlumer
我需要制作一个单独的d.ts文件还是只发布多个tsx文件就足够了? - radix
据我所记,多个.tsx文件是行不通的,你必须提供一个.d.ts文件。 - zlumer

8

2

将以下代码添加到您的 tsconfig.json 文件中

{
  "compilerOptions": {
    "declaration": true,
    "declarationDir": "build" // the name of the build folder generated
    }
}

1
这个跟 这里 的回答一起帮助了。 - Eunit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接