如何为新库编写typescript定义文件

How to write typescript definition files for new library?

本文关键字:typescript 定义 文件 新库编      更新时间:2023-09-26

如果您要编写自己的开源typescript库,您将如何构建typescript和typescript定义?根据我的理解,定义文件实际上是为编译器而存在的,所以当你的库被消耗时,有智能感知来帮助消费者。

然而,在开发库时,定义文件如何在内部工作?你会把你所有的类型(接口,类等)放在{module}.d。Ts文件并在内部引用定义文件,这样您就不必两次编写类型(一次在{module}中)。在{module}.d.ts?

在typescript编译器选项中,将"declaration"设置为true有什么意义?对我来说,自动化定义文件创建似乎没有帮助,如果它不会很有帮助(即注释)。

如果你的库有多个模块,你会为每个模块写一个单独的定义,并在定义之间添加引用,然后用一些自动器(即gulp, grunt)将它们连接起来吗?

建议使用什么方式来公开你的库,以便typescript消费者和javascript消费者都可以使用你的库?

你怎么用打字稿写测试?您会在测试文件中导入typescript模块吗?

在typescript中开发库时,不使用自己的类定义。它们是"自包含的",并且已经向转译器/IDE提供了所有类型信息。正如您所提到的外部消费者的定义。

declaration设置为true的目的是为了摆脱从typescript类中收集类型信息并将其粘贴到定义文件中的繁琐工作。正如我所说,这些信息已经存在于typescript文件中,并且可以被转译器自动提取。

关于如何组织定义和公开它们的方式——我确信有多种不同的方式,有一件事是肯定的——你不希望在两个地方手动编写相同的类定义。话虽如此,我可以给你一个例子,说明我是如何公开库项目并在另一个项目中使用它的。注意索引。ts文件在那里,以及如何根一个暴露在package.json -> typings字段。在这里,您还可以通过jasmine找到库的单元测试示例。