何时使用 types.ts 与 types.d.ts

When to use types.ts vs types.d.ts

有许多资源解释了声明文件 (d.ts) 对以下任一方面都有用:

让我感到困惑的是,许多像 material-ui 这样的项目正在使用 d.ts 文件来简单地存储类型并让它们在自己的代码中使用。

在这一点上我开始质疑,当我们可以拥有 types.d.ts 文件并简单地消费时,拥有 types.ts 文件我们必须导出/导入类型和接口来使用它们有什么意义它的接口/类型不需要导出/导入?使用其中一个的优点和缺点是什么?

.d.ts

  • 表示这个文件不应该被编译
  • 放置声明类型并将在某处的js上实现
  • 仅类型文件

.ts

  • 普通打字稿源代码
  • 必须编译的可执行代码

在大多数情况下,您应该只编写打字稿文件,然后让编译器为您生成 .d.ts 文件。这几乎总是正确的选择,除了:

  1. 出于某种原因,不允许您编写打字稿,您必须编写所有内容 javascript。
  2. 您正在从 另一个 包中创建或修改类型。 .d.ts 个文件可以帮助您覆盖这些类型。
  3. 您的代码库非常庞大。

我想 Material UI 在第 1 组中。 Deno 在第 3 组。

tl;dr:坚持写打字稿。编写 javascript 和单独的类型文件非常不符合人体工程学,你会失去 typescript 的很多好处。