TypeScript作为JavaScript的超集,实际开发中不可避免地需要引入第三方JavaScript库,虽然通过直接引入即可调用库中的类和方法,但却无法使用TypeScript诸如类型检查等特性功能。
为了解决这个问题,需将库中的方法体或函数体剔除后仅保留类型声明,从而生成一个描述JavaScript库和模块信息的声明文件。通过引入声明文件,即可借用TypeScript各种特性来使用库文件。
declare
例如:jQuery中获取ID的元素时,在TypeScript中并不知道$
或jQuery
是什么。
jQuery("#id") // error TS2304: Cannot find name 'jQuery'.
因此需要使用declare
关键字来定义jQuery
的类型,以帮助TypeScript来判断传入的参数类型是否正确。
declare var jQuery:(selector:string) => any
jQuery("#id")
declare
关键字定义的类型只会用于编译时的检查,编译结果会被删除。
.d.ts
- TypeScript声明文件以
.d.ts
作为文件后缀
$ vim index.d.ts
- 声明文件或模块的语法格式
declare module ModuleName {}
- TypeScript引入声明文件
/// <reference path = "index.d.ts" />
很多流行的库的声明文件无需自己定义,大部分主流的类库的声明文件可在 https://www.typescriptlang.org/dt/search 中查找获得。