我已经意识到,有些类型记录文件有一个.d.ts,而另一些只有一个.ts扩展。
他们代表什么?有什么不同吗?
发布于 2016-11-28 09:54:37
这些都是声明文件,或者有时在网络上被称为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';但是类型记录编译器会给出一个错误:
Error:(1, 17) TS2307:Cannot find module './lib'.这是因为类型记录不能读取js文件。因此,您需要告诉类型记录编译器关于您的模块和一个函数。当然,您不希望在类型记录中重写整个库。但是有一个解决方案声明文件。您可以通过将以下内容放入f文件为lib.js创建声明文件,从而在lib.d.ts中使用lib.d.ts函数:
export declare function f(): void;现在,它将全部正确编译。如果您是用TypeScript编写的,可以通过在tsconfig.json文件中指定"declaration": true,或将-d选项指定为tsc来自动生成这些文件。
当你需要的时候,
因此,在类型记录编译时间内,d.ts文件与它们的JavaScript对应文件(文件)一起使用,而不是原始.ts文件,如果:
有时,ts和d.ts文件都是可用的,但是开发人员选择只公开d.ts文件。这是angular2团队为他们的npm存储库选择的方法。
发布于 2016-11-28 09:24:55
.ts是一个TypeScript代码文件。.d.ts是一个声明文件,通常用于定义非类型记录API (如DOM或jQuery)的类型。
发布于 2016-11-28 09:25:15
.d.ts文件通常用来表示类型定义文件。通常用于已经存在于javascript中的库,而没有类型记录源。.ts文件将是您的类型记录文件。
https://stackoverflow.com/questions/40840821
复制相似问题