首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript:*.ts和*d.ts扩展

TypeScript:*.ts和*d.ts扩展
EN

Stack Overflow用户
提问于 2016-11-28 09:22:48
回答 5查看 3.2K关注 0票数 6

我已经意识到,有些类型记录文件有一个.d.ts,而另一些只有一个.ts扩展。

他们代表什么?有什么不同吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-11-28 09:54:37

这些都是声明文件,或者有时在网络上被称为definition files

我将用一个例子来回答,这个例子显示了为什么您需要这些文件。

假设您有一个带有lib.js函数的f库。

代码语言:javascript
复制
"use strict";
function f() {
}
exports.f = f;

这个库可以很好地处理其他js文件。例如。使用自main.js

代码语言:javascript
复制
var f = require('./lib').f;
f();

但是您正在使用TypeScript进行开发,您需要使用这个函数,所以在您的index.ts中您可以编写以下内容:

代码语言:javascript
复制
import {f} from './lib';

但是类型记录编译器会给出一个错误:

代码语言:javascript
复制
Error:(1, 17) TS2307:Cannot find module './lib'.

这是因为类型记录不能读取js文件。因此,您需要告诉类型记录编译器关于您的模块和一个函数。当然,您不希望在类型记录中重写整个库。但是有一个解决方案声明文件。您可以通过将以下内容放入f文件为lib.js创建声明文件,从而在lib.d.ts中使用lib.d.ts函数:

代码语言:javascript
复制
export declare function f(): void;

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

当你需要的时候

因此,在类型记录编译时间内,d.ts文件与它们的JavaScript对应文件(文件)一起使用,而不是原始.ts文件,如果:

  • 您希望用JavaScript编写的库被用TypeScript编写的其他人使用。
  • 您希望在您的JavaScript项目中使用用TypeScript编写的库

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

票数 22
EN

Stack Overflow用户

发布于 2016-11-28 09:24:55

.ts是一个TypeScript代码文件。.d.ts是一个声明文件,通常用于定义非类型记录API (如DOM或jQuery)的类型。

票数 2
EN

Stack Overflow用户

发布于 2016-11-28 09:25:15

.d.ts文件通常用来表示类型定义文件。通常用于已经存在于javascript中的库,而没有类型记录源。.ts文件将是您的类型记录文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40840821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档