TypeScript 里 .d.ts 文件的用处

“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 的命令行实用程序来帮助从存储库中搜索和安装声明文件。


上一篇:Neko and sequence(HDU - 6539,树状数组 + 思维)


下一篇:TypeScript 书写 .d.ts 文件的一些注意事项