何时使用 types.ts 与 types.d.ts
When to use types.ts vs types.d.ts
有许多资源解释了声明文件 (d.ts) 对以下任一方面都有用:
- 为您的 TS 项目中使用的 JS 库声明类型,或
- 允许其他 TS 项目使用您的 JS 库
让我感到困惑的是,许多像 material-ui 这样的项目正在使用 d.ts 文件来简单地存储类型并让它们在自己的代码中使用。
在这一点上我开始质疑,当我们可以拥有 types.d.ts
文件并简单地消费时,拥有 types.ts
文件我们必须导出/导入类型和接口来使用它们有什么意义它的接口/类型不需要导出/导入?使用其中一个的优点和缺点是什么?
.d.ts
- 表示这个文件不应该被编译
- 放置声明类型并将在某处的js上实现
- 仅类型文件
.ts
- 普通打字稿源代码
- 必须编译的可执行代码
在大多数情况下,您应该只编写打字稿文件,然后让编译器为您生成 .d.ts
文件。这几乎总是正确的选择,除了:
- 出于某种原因,不允许您编写打字稿,您必须编写所有内容 javascript。
- 您正在从 另一个 包中创建或修改类型。
.d.ts
个文件可以帮助您覆盖这些类型。
- 您的代码库非常庞大。
我想 Material UI 在第 1 组中。 Deno 在第 3 组。
tl;dr:坚持写打字稿。编写 javascript 和单独的类型文件非常不符合人体工程学,你会失去 typescript 的很多好处。
有许多资源解释了声明文件 (d.ts) 对以下任一方面都有用:
- 为您的 TS 项目中使用的 JS 库声明类型,或
- 允许其他 TS 项目使用您的 JS 库
让我感到困惑的是,许多像 material-ui 这样的项目正在使用 d.ts 文件来简单地存储类型并让它们在自己的代码中使用。
在这一点上我开始质疑,当我们可以拥有 types.d.ts
文件并简单地消费时,拥有 types.ts
文件我们必须导出/导入类型和接口来使用它们有什么意义它的接口/类型不需要导出/导入?使用其中一个的优点和缺点是什么?
.d.ts
- 表示这个文件不应该被编译
- 放置声明类型并将在某处的js上实现
- 仅类型文件
.ts
- 普通打字稿源代码
- 必须编译的可执行代码
在大多数情况下,您应该只编写打字稿文件,然后让编译器为您生成 .d.ts
文件。这几乎总是正确的选择,除了:
- 出于某种原因,不允许您编写打字稿,您必须编写所有内容 javascript。
- 您正在从 另一个 包中创建或修改类型。
.d.ts
个文件可以帮助您覆盖这些类型。 - 您的代码库非常庞大。
我想 Material UI 在第 1 组中。 Deno 在第 3 组。
tl;dr:坚持写打字稿。编写 javascript 和单独的类型文件非常不符合人体工程学,你会失去 typescript 的很多好处。