“d.ts”文件用于为 TypeScript 提供有关用 JavaScript 编写的 API 的类型信息。这个想法是你正在使用像jQuery 或 underscore 这样现有的 javascript 库。 您想使用 TypeScript 来消费 这些 jQuery 库实现的 API。
您可以编写仅包含类型注释的 d.ts 文件,而不是在 TypeScript 中重写 jquery 或 underscore 或其他任何内容。然后从您的 TypeScript 代码中,可以在仍然使用纯 JavaScript 库的同时,获得静态类型检查的 TypeScript 优势。
这要归功于 TypeScript 的约束,即不允许您在导入语句的末尾添加“.ts”扩展名。 因此,当您引用某个文件时,例如 my-module.js,如果它旁边有一个 my-module.d.ts,那么 TypeScript 将包含其内容:
src/ my-module.js my-module.d.ts index.ts
my-module.js 的内容:
const thing = 42; module.exports = { thing };
my-module.d.ts 的内容:
export declare const thing: number;
index.ts 的内容:
import { thing } from "./my-module"; // <- no extension // runtime implementation of `thing` is taken from ".js" console.log(thing); // 42 // type declaration of `thing` is taken from ".d.ts" type TypeOfThing = typeof thing; // number
也就是说,类型定义和运行时实现,TypeScript 可以自动分别从 *.d.ts 和 *.js 中获取。
当 TypeScript 脚本被编译时,有一个选项可以生成一个声明文件(扩展名为 .d.ts),作为编译后的 JavaScript 中组件的接口。 在此过程中,编译器剥离所有函数和方法主体,仅保留导出类型的签名。 然后,当第三方开发人员从 TypeScript 使用它时,生成的声明文件可用于描述 JavaScript 库或模块的导出虚拟 TypeScript 类型。
声明文件的概念类似于 C/C++ 中头文件的概念。
可以为现有的 JavaScript 库手动编写类型声明文件,就像为 jQuery 和 Node.js 所做的那样。
大量流行 JavaScript 库的声明文件集合托管在 GitHub 上的绝对类型和类型注册表中。 提供了一个名为 Typings 的命令行实用程序来帮助从存储库中搜索和安装声明文件。