*.d.ts 文件有什么用?

Soc*_*tes 14 typescript .d.ts

在许多 TypeScript 示例文件中,该*.d.ts类型的文件是在构建时自动创建的。一些示例谈到环境声明。但这并不能帮助我理解这些文件背后的想法和意义,因为它们基本上只是重复其他类已经拥有的东西。

那么为什么还要创建额外的*.d.ts文件呢?他们如何在我的代码中帮助我?

Tit*_*mir 19

TypeScript 编译器生成的定义文件确实大部分是您编写的代码的重复,但有一些显着差异:

  • 它们不包含实现,只包含声明
  • 它们只包含可公开访问的类型

这些声明文件的用例是用于分发库。您可以分发没有原始 TypeScript 代码的库(因为这在运行时无关紧要)并仅分发已编译的 JavaScript。JavaScript 消费者将使用 JavaScript 而不会关心它的来源。TypeScript 使用者也将在运行时使用 JavaScript,但这些.d.ts文件将允许编译器检查代码,即使该库的原始 TypeScript 源不存在。

同样的方法也可以用来将一个大项目分解成几个较小的项目,这些项目使用声明文件来建立它们之间的接口。每个项目都可以独立重新编译,无需重新编译所有项目,减少编译时间。TypeScript 编译器实际上计划在未来为此添加内置支持。


Fen*_*ton 6

如果您有一个 JavaScript 文件并且想要向其中添加丰富的类型信息,您可以在声明文件中进行。这就像在两个文件之间拆分您的 TypeScript;一个.js只有普通 JavaScript的 JavaScript 文件,以及一个.d.ts包含所有类型信息的声明文件。

这意味着文件之间存在一些冗余。

通常,如果你编写一个 TypeScript 库,你会自动生成 JavaScript 和声明文件并将它们打包,而不是原始的 TypeScript。这意味着可以从 JavaScript 和 TypeScript 应用程序使用该库,并允许使用库使用与您的库不同的 TypeScript 版本。

如果您有要包含在编译中的 JavaScript 文件,则不必创建声明文件 - IDE 允许在 JavaScript 中进行 TypeScript 样式的推理(例如,VS Code 允许// @ts-check注释)并且编译器允许将 JavaScript 包含在编译,如果你愿意。