定义

  • 必须以.d.ts为后缀的文件;
  • 用于存储声明语句的一个单独的文件。

第三方声明文件

  • 使用 @types 统一管理第三方库的声明文件。
  • 用 npm 安装对应的声明模块
1
npm install @types/jquery --save-dev

书写声明文件

  • 库的使用场景主要有以下几种

全局变量

declare var/let/const 声明全局变量

  • 一般来说,全局变量都是禁止修改的常量,所以大部分情况都应该使用 const 而不是 var 或 let。
  • 声明语句中只能定义类型,切勿在声明语句中定义具体的实现。

declare function 声明全局方法

  • declare function 用来定义全局函数的类型。
  • 在函数类型的声明语句中,函数重载也是支持的。

declare class 声明全局类

  • 当全局变量是一个类的时候,我们用 declare class 来定义它的类型。
  • 同样的,declare class 语句也只能用来定义类型,不能用来定义具体的实现。
1
2
3
4
5
6
7
8
9
10
// src/Animal.d.ts

declare class Animal {
name: string;
constructor(name: string);
sayHi(): string;
}
// src/index.ts

let cat = new Animal('Tom');

declare enum 声明全局枚举类型

  • 使用 declare enum 定义的枚举类型也称作外部枚举(Ambient Enums)。
  • declare enum 仅用来定义类型,而不是具体的值。

declare namespace 声明(含有子属性的)全局对象

  • declare namespace 用来表示全局变量是一个对象,包含很多子属性。

interface 和 type 声明全局类型。

npm 包

UMD 库

直接扩展全局变量

在 npm 包或 UMD 库中扩展全局变量

模块插件