我已经意识到一段时间了,一些打字稿文件有一个.d.ts
,其他一些.ts
扩展。
他们代表什么? 哪个区别?
答案 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>
有时,ts
和d.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代码文件。 .ts
是declaration 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”修饰符是错误的。