TypeScript:* .ts和* d.ts extensions

时间:2016-11-28 09:22:49

标签: typescript

我已经意识到一段时间了,一些打字稿文件有一个.d.ts,其他一些.ts扩展。

他们代表什么? 哪个区别?

5 个答案:

答案 0 :(得分:11)

这些是declaration files,有时它们在网络上被称为definition files

我将回答一个示例,说明您需要这些文件的原因。

假设您有一个lib.js库,其f函数。

"use strict";
function f() {
}
exports.f = f;

此库适用于其他js个文件。例如。使用main.js

var f = require('./lib').f;
f();

但是您正在使用TypeScript进行开发,并且需要使用此功能,因此在index.ts中您可以编写以下内容:

import {f} from './lib';

但是typescript编译器会给你一个错误:

Error:(1, 17) TS2307:Cannot find module './lib'.

这是因为打字稿无法读取js个文件。因此,您需要告诉typescript编译器您的模块和函数。当然,你不想在打字稿中重写整个lib。但是有一个解决方案 - 声明文件。您可以通过将以下内容放入f文件中为index.ts创建声明文件来使用lib.js中的lib.d.ts函数:

export declare function f(): void;

现在它将全部正确编译。如果您使用TypeScript编写,则可以通过在"declaration": true,文件中指定tsconfig.json或在-d指定tsc选项来自动生成这些文件。

当您需要时

因此,在打字稿编译时,d.ts文件与JavaScript对应文件(文件)一起使用,而不是原始.ts文件,如果:{/ p>

  • 你希望用JavaScript编写的lib被其他人使用 用TypeScript写
  • 你想要使用用JavaScript编写的lib 在你的TypeScript项目中

有时,tsd.ts文件都可用,但开发人员选择只公开d.ts个文件。这是angular2团队为其npm存储库选择的方法。

答案 1 :(得分:2)

div.bild { width: 100%; background: url('https://www.zong.com.pk/images/uploads/misc/4.internationalcalls_desktop-Banner.jpg') no-repeat center center; background-size:100% auto; display: flex; align-items: center; } 是一个TypeScript代码文件。 .tsdeclaration file,通常用于定义非TypeScript API(例如DOM或jQuery)的类型。

答案 2 :(得分:1)

.d.ts文件通常用于表示类型定义文件。通常对于已经存在于javascript中的库,没有typescript源。 .ts文件将是您的打字稿文件

答案 3 :(得分:1)

d.ts文件仅包含各种现有JavaScript库的函数,props等的定义。 (代表绝对类型的脚本)

.ts文件是您开发的文件,并转换为js文件。 (代表键入的脚本)

答案 4 :(得分:1)

.d.ts文件不能包含在编译期间生成javascript的代码。它仅适用于(外部javascrip库的定义)。例如,在.d.ts文件中定义“namespace”而没有“declare”修饰符是错误的。

相关问题