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

标签 javascript typescript architecture open-source definitelytyped

如果您要编写自己的开源 typescript 库,您将如何构建 typescript 和 typescript 定义?据我了解,定义文件确实供编译器使用,因此当您的库被使用时,会有智能感知来帮助消费者。

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

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

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

公开您的库的推荐方法是什么,以便 typescript 使用者和 JavaScript 使用者都可以使用您的库?

你会如何用 typescript 编写测试?您会在测试文件中导入 typescript 模块吗?

最佳答案

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

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

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

希望这能为您提供一些有关如何进行库开发的信息。

关于javascript - 如何为新库编写 typescript 定义文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858655/

相关文章:

javascript - 如何将 JSON 数组传递给 C# WebBrowser 控件中的 javascript 函数?

javascript - 如果它们的 Prop 不同,如何流动类型组件 Prop 和getDerivedStateFromProps?

angular - 在 angular 2/angular 4 中集成 recaptcha

php - 如何确定我的操作系统是 32 位还是 64 位?

testing - 测试系统架构可用性设计的工具

javascript - 来自后端的字节数组在前端转换为其他内容

javascript - jQuery onLoad 处理程序

javascript - 这种随机分布的指数失真的线性等效值是多少?

typescript :如何制作一个作为接口(interface)键的类型,但只有作为字符串的键

c# - 如何解决此代码重复+添加另一种方法