简介

单独使用的模块,一般会同时提供一个单独的类型声明文件(declaration file)把本模块的外部接口的所有类型都写在这个文件里面,便于模块使用者了解接口,也便于编译器检查使用者的用法是否正确。类型声明文件里面只有类型代码,没有具体的代码实现。它的文件名一般为 [模块名].d.ts 的形式,其中的 d 表示 declaration(声明)。举例来说,有一个模块的代码如下

d.ts 类型声明文件 - 图1

它的类型声明文件可以写成下面这样

d.ts 类型声明文件 - 图2

类型声明文件也可以使用 export = 命令,输出对外接口。下面是 moment 模块的类型声明文件的例子。示例中,模块 moment 内部有一个函数 moment(),而 export = 表示 module.exports 输出的就是这个函数

d.ts 类型声明文件 - 图3

除了使用 export =,模块输出在类型声明文件中,也可以使用 export default 表示。示例中,模块输出的是一个整数,那么可以用 export default 或 export = 表示输出这个值

d.ts 类型声明文件 - 图4

下面是一个如何使用类型声明文件的简单例子。有一个类型声明文件 types.d.ts

d.ts 类型声明文件 - 图5

然后,就可以在 TypeScript 脚本里面导入该文件声明的类型

d.ts 类型声明文件 - 图6

类型声明文件也可以包括在项目的 tsconfig.json 文件里面,这样的话,编译器打包项目时,会自动将类型声明文件加入编译,而不必在每个脚本里面加载类型声明文件。比如,moment 模块的类型声明文件是 moment.d.ts,使用 moment 模块的项目可以将其加入项目的 tsconfig.json 文件

d.ts 类型声明文件 - 图7

类型声明文件的来源

类型声明文件主要有以下三种来源

  • TypeScript 编译器自动生成
  • TypeScript 内置类型文件
  • 外部模块的类型声明文件,需要自己安装

自动生成

下面是在 tsconfig.json 文件里面,打开这个选项

d.ts 类型声明文件 - 图8

内置声明文件

d.ts 类型声明文件 - 图9

外部类型声明文件

d.ts 类型声明文件 - 图10

d.ts 类型声明文件 - 图11

declare 关键字

d.ts 类型声明文件 - 图12

d.ts 类型声明文件 - 图13

d.ts 类型声明文件 - 图14

模块发布

d.ts 类型声明文件 - 图15

三斜杠命令

概述

d.ts 类型声明文件 - 图16

三斜杠命令(///)是一个 TypeScript 编译器命令,用来指定编译器行为。它只能用在文件的头部,如果用在其他地方,会被当作普通的注释。另外,若一个文件中使用了三斜线命令,那么在三斜线命令之前只允许使用单行注释、多行注释和其他三斜线命令,否则三斜杠命令也会被当作普通的注释。除了拆分类型声明文件,三斜杠命令也可以用于普通脚本加载类型声明文件。三斜杠命令主要包含三个参数,代表三种不同的命令

  • path
  • types
  • lib

///

d.ts 类型声明文件 - 图17

///

d.ts 类型声明文件 - 图18

///

d.ts 类型声明文件 - 图19