声明文件

TypeScript 通过声明文件来获取所有未显式在项目中定义过的内容,通常用来支持各种库和项目的外部全局变量定义等。声明文件是一个标准的 TypeScript 文件,以 .d.ts 后缀作为文件名结尾。通常使用 npm 安装的开头为 @types/ 的库都是各个功能库提供的声明文件,用来支持 IDE 进行代码提示以及编译期的合法性验证。但是需要注意的是,不是所有的库都有对应的 @types/ 提供声明文件,部分库已经自带了声明文件,或者其本身就是使用 TypeScript 编写的,这两种情况下,不需要安装 @types/ 来提供支持。

声明文件中一般只包含变量、函数、接口、类、命名空间等内容的声明,不包含实现代码。所有的声明都使用 declare 关键字引领。例如:

declare let personName: string;
declare function Hello(greeting: string): string;
declare interface Animal {
  height: number;
  averageWeight?: number;
  walk(): void;
}
declare class Mammal extends Animal {}
declare type Key = string | number;

declare namespace Application {
  function Greeting(target: string): string;
}

应用项目中的所有类型声明可以都集中到一个指定的目录中,并在tsconfig.json文件中的compilerOptions.typeRoots字段中列举指定这个目录的路径,这样就可以在使用Typescript的应用中实现对于自定义类型的代码提示,而且还不必在所有声明自定义类型的文件中将自定义类型导出出来。