当前位置: 首页 > 知识库问答 >
问题:

打字稿中的*.d.ts与*. ts有什么区别?

杨甫
2023-03-14

我开始玩TypeScript,我觉得这真的很棒。但我对 *.d.ts*.ts 之间的区别感到困惑。它们之间有什么区别?谁能用适当的例子来解释我?

共有2个答案

公西英叡
2023-03-14

*.d.ts 文件中允许的任何内容也可能出现在 *.ts 文件中,但反之则不然。所以 *.d.ts 允许 TypeScript 的一个子集功能。

*.d.ts文件只允许包含在输出中不生成任何JavaScript代码的TypeScript代码。如果您试图使用TypeScript的任何会生成JavaScript的特性,您将会得到一个错误。

接口是允许的,因为它们在编译后完全消失。

还允许使用常量枚举(在1.4中添加),这与在输出JavaScript中生成对象的普通枚举不同。

顶级类、变量、模块和函数必须以声明作为前缀。通常,您会看到一个顶级的声明模块,因此它里面的内容也是纯声明:

declare module Something {
    var x;
}

它们不仅仅是将TypeScript接口暴露给JavaScript编写的代码,还非常有用。您还可以使用它们来声明一组在您的代码中广泛使用的通用接口,因此不必仅为了获得这些接口的可见性而要求特定的物理模块。

邴景山
2023-03-14

TypeScript声明文件(*.d.ts

这些文件用于描述在TypeScript中使用的JavaScript文件的“形状”。

例如,假设我在TypeScript编译器知道的范围之外的某个文件中包含以下JavaScript代码:

function displayMessage(message) {
    alert(message);
}

仅凭这个文件,我的TypeScript代码不会知道这个函数的存在。它不知道自己的名字,也不知道自己的参数。我们可以通过在声明文件中这样描述来解决这个问题(Example.d.ts):

declare function displayMessage(message: string);

现在我可以在TypeScript中使用函数displayMessage而不会出现编译错误,并且当我不正确地使用它时会出现编译错误(例如,如果我提供了2个参数而不是1个参数,我会得到一个错误)。

简而言之:声明文件允许您使用TypeScript中的现有JavaScript代码和类型信息,而无需重写TypeScript的代码。

TypeScript文件(.ts

这是编写TypeScript时使用的标准文件扩展名。它将被编译成JavaScript。

 类似资料:
  • 我已经在我的.html文件中定义了这些: 然后在test.js: 但Typescript错误地指出:“找不到名称‘树’” 我也尝试编译与和放置在test.js文件的顶部,但它再次出错:

  • 和之间的区别是什么? 上述结果如下: “Point”仅指类型,但在此处用作值。 为什么会这样呢?我肯定不会使用作为值,而是使用它来实例化类型。 在哪些情况下,我需要使用,因为不合适?

  • 问题内容: 我正在从事一个相对较大的打字稿项目,正在用于运行节点测试和示例。据我了解,将文件编译为文件并执行。 最近,我听说了,这是一个打字稿运行时。我在typescript中尝试了一些示例,该示例可以使用。我使用来运行示例,控制台中印有许多编译消息,然后执行代码。后来我发现中有缓存文件。我觉得执行速度不会比 这似乎都和编译和使用高速缓存运行。它们之间有什么区别? 问题答案: Deno更像Node

  • 我正在努力寻找 有什么不同?

  • 我正在学习Typescript,并尝试实现一个简单的React/Redux应用程序。当我使用同步操作时,它工作得很好,但问题在于异步操作。我正在学习官方的redux教程。 首先,我宣布会议状态 然后我为这个动作声明接口 我使用联合类型导出它们

  • 我在角度使用日期范围选择器。 当我点击这个按钮时,我得到下拉菜单,用一个Apply按钮选择日期范围,这个按钮有一个类“applyBtn”。 在 JQuery 中有一个选项 来获取 函数。我不能写在打字稿中是否有的等价物? 我想要这样的东西,