简介
单独使用的模块,一般会同时提供一个单独的类型声明文件(declaration file),把本模块的外部接口的所有类型都写在这个文件里面,便于模块使用者了解接口,也便于编译器检查使用者的用法是否正确。类型声明文件里面只有类型代码,没有具体的代码实现。它的文件名一般为 [模块名].d.ts 的形式,其中的 d 表示 declaration(声明)。举例来说,有一个模块的代码如下
它的类型声明文件可以写成下面这样
类型声明文件也可以使用 export = 命令,输出对外接口。下面是 moment 模块的类型声明文件的例子。示例中,模块 moment 内部有一个函数 moment(),而 export = 表示 module.exports 输出的就是这个函数
除了使用 export =,模块输出在类型声明文件中,也可以使用 export default 表示。示例中,模块输出的是一个整数,那么可以用 export default 或 export = 表示输出这个值
下面是一个如何使用类型声明文件的简单例子。有一个类型声明文件 types.d.ts
然后,就可以在 TypeScript 脚本里面导入该文件声明的类型
类型声明文件也可以包括在项目的 tsconfig.json 文件里面,这样的话,编译器打包项目时,会自动将类型声明文件加入编译,而不必在每个脚本里面加载类型声明文件。比如,moment 模块的类型声明文件是 moment.d.ts,使用 moment 模块的项目可以将其加入项目的 tsconfig.json 文件
类型声明文件的来源
类型声明文件主要有以下三种来源
- TypeScript 编译器自动生成
- TypeScript 内置类型文件
- 外部模块的类型声明文件,需要自己安装
自动生成
下面是在 tsconfig.json 文件里面,打开这个选项
内置声明文件
外部类型声明文件
declare 关键字
模块发布
三斜杠命令
概述
三斜杠命令(///)是一个 TypeScript 编译器命令,用来指定编译器行为。它只能用在文件的头部,如果用在其他地方,会被当作普通的注释。另外,若一个文件中使用了三斜线命令,那么在三斜线命令之前只允许使用单行注释、多行注释和其他三斜线命令,否则三斜杠命令也会被当作普通的注释。除了拆分类型声明文件,三斜杠命令也可以用于普通脚本加载类型声明文件。三斜杠命令主要包含三个参数,代表三种不同的命令
- path
- types
- lib