我开始玩TypeScript,我发现它非常棒。但我对*.d.ts
和*.ts
之间的区别感到困惑。它们之间的区别是什么?任何人都可以用恰当的例子来解释我吗?
答案 0 :(得分:42)
TypeScript定义文件(*.d.ts
)
这些文件用于描述在TypeScript中使用的JavaScript文件的“形状”。
例如,假设我有以下JavaScript(Example.js):
function displayMessage(message) {
alert(message);
}
单独使用此文件,我的TypeScript代码将不会有任何线索存在此函数。它不会知道它的名字,也不会知道它的参数。我们可以通过在定义文件中描述它来解决这个问题(Example.d.ts):
declare function displayMessage(message: string);
现在我可以在TypeScript中使用函数displayMessage
而不会出现编译错误,当我错误地使用它时会遇到编译错误(例如,如果我提供了2
个参数而不是{{1}我会得到一个错误。)
简而言之:定义文件允许您在TypeScript中使用现有的JavaScript代码,而无需在TypeScript中重写代码。
TypeScript文件(1
)
这是您在编写TypeScript时使用的标准文件扩展名。它将被编译为JavaScript。
答案 1 :(得分:21)
* .d.ts文件中允许的任何内容也可能出现在* .ts文件中,但不会出现相反的情况。因此* .d.ts允许TypeScript功能的子集。
A * .d.ts文件只允许包含不在输出中生成任何JavaScript代码的TypeScript代码。如果您尝试使用会生成JavaScript的TypeScript的任何功能,您将收到错误。
允许接口,因为它们在编译后会完全消失。
还允许使用Const枚举(在1.4中添加),这与在输出JavaScript中生成对象的普通枚举不同。
顶级类,变量,模块和函数必须以declare
为前缀。通常你会看到一个顶级declare module
,因此其中的内容也是纯粹的声明:
declare module Something {
var x;
}
它们不仅仅是将TypeScript接口暴露给用JavaScript编写的代码。您还可以使用它们来声明代码中广泛使用的一组公共接口,因此不需要require
特定的物理模块来获取这些接口的可见性。