在许多TypeScript示例中,*.d.ts
类型的文件会在构建时自动创建。一些例子涉及ambient declarations。这虽然不能帮助我理解这些文件背后的想法和意义,因为它们基本上只是重复其他类已有的。
那么为什么还要创建额外的*.d.ts
文件呢?他们如何在我的代码中帮助我?
答案 0 :(得分:4)
typescript编译器生成的定义文件确实主要是您编写的代码的重复,但有一些显着的差异:
这些声明文件的用例是用于分发库。您可以在没有原始Typescript代码的情况下分发库(无论如何在运行时无关紧要)并仅分发编译的JavaScript。 JavaScript消费者将使用JavaScript而不关心它的来源。 Typescript使用者也将在运行时使用JavaScript,但.d.ts
文件将允许编译器检查代码,即使库的原始Typescript源不存在。
这种方法也可用于将大型项目拆分为几个较小的项目,这些项目使用声明文件来建立它们之间的接口。每个项目都可以独立重新编译,无需重新编译所有项目,减少编译时间typescript编译器实际上计划在未来为此添加buit-in支持。
答案 1 :(得分:3)
如果您有一个JavaScript文件并且想要向其添加丰富的类型信息,则可以在声明文件中执行此操作。这就像在两个文件之间拆分TypeScript一样;一个只包含纯JavaScript的JavaScript文件.js
,以及一个包含所有类型信息的声明文件.d.ts
。
这意味着文件之间存在一些冗余。
通常,如果您编写TypeScript库,则会自动生成JavaScript和声明文件,并将其打包而不是原始的TypeScript。这意味着可以从JavaScript和TypeScript应用程序中使用该库,并允许使用库使用与库不同的TypeScript版本。
如果您想要包含在编译中的JavaScript文件,则不必创建声明文件 - IDE允许在JavaScript中进行TypeScript样式的推理(例如,VS Code允许// @ts-check
注释如果你愿意,编译器允许JavaScript包含在编译中。