何时使用 types.ts 和 types.d.ts?

14

有很多资源可以解释声明文件(d.ts)是用于:

  • 声明在你的TS项目中使用的JS库的类型;或
  • 允许其他TS项目使用你的JS库。

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

此时我开始怀疑,当我们可以有types.d.ts文件并且只需消耗其接口/类型而不需要导出/导入时,为什么要有types.ts文件?使用其中一个的优缺点是什么?

2个回答

17

在大多数情况下,你应该只编写typescript文件,让编译器为你生成.d.ts文件。这几乎总是正确的选择,除非:

  1. 由于某种原因,你无法编写typescript,必须编写纯javascript。
  2. 你正在创建或修改来自另一个包的类型。.d.ts文件可以帮助你覆盖这些类型。
  3. 你有一个非常庞大的代码库。

我认为Material UI属于第一组。Deno属于第三组。

tl;dr:坚持编写typescript。编写javascript和单独的类型文件极不人性化,并且会失去很多typescript的好处。


9

.d.ts

  • 用于指示此文件不应编译
  • 声明类型并在js中实现
  • 只有类型信息的文件

.ts

  • 正常的TypeScript源代码
  • 必须编译的可执行代码

1
谢谢Ardy,这很有用!应该使用哪一个来简单地在项目中使用类型,为什么会这样呢?这两者之间的性能如何? - ale917k
4
如果您的项目完全使用TypeScript,请只使用.ts扩展名,否则请使用.d.ts。例如,如果您的项目是一个库,让其他人仅使用JavaScript并从.d.ts文件中获取有用的类型信息。 - Ardy Febriansyah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接