如何为新库编写打字稿定义文件?

时间:2016-10-04 17:45:44

标签: javascript typescript architecture open-source definitelytyped

如果您要编写自己的开源打字稿库,您将如何构建打字稿和打字稿定义?根据我的理解,定义文件确实存在于编译器中,因此当您的库被消耗时,智能感知可以帮助消费者。

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

在打字稿编译器选项中,设置"声明"的重点是什么?真的吗?对我来说,如果定义文件创建不是很有用(即评论),那么自动化定义文件似乎没有用。

如果您的库有多个模块,您是否会为每个模块编写单独的定义,并在定义之间添加引用,然后将它们与某个自动化程序(即gulp,grunt)连接起来?

公开图书馆的推荐方法是什么,以便打字版消费者和javascript消费者都可以使用您的图书馆?

你会如何用打字稿写测试?你会在测试文件中导入打字稿模块吗?

1 个答案:

答案 0 :(得分:1)

在打字稿中开发库时,不要使用自己类的定义。他们是自给自足的'并已向transpiler / IDE提供所有类型信息。您已经为外部消费者提到了这些定义。

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

关于如何组织定义并公开它们的方式 - 我确信有多种不同的方法,有一点是肯定的 - 你不想在两个地方手动编写相同的类定义。话虽如此,我可以举例说明我如何公开库project并在another one中使用它。 注意那里的index.ts文件以及在package.json -> typings字段中公开根文件的方式。在那里,您还可以通过jasmine找到库的单元测试示例。

希望这能为您提供有关如何处理图书馆开发的一些信息。