Appearance
声明语句
TS 中,编译器并不知道 $ 或 jQuery 是什么东西
typescript
jQuery('#foo'); // Error我们需要使用 declare var 来定义它的类型
typescript
declare var jQuery: (selector: string) => any;
jQuery('#foo');declare var 并没有真的定义一个变量,只是定义了全局变量 jQuery 的类型,仅仅会用于编译时的检查,在编译结果中会被删除。它编译结果是:
javascript
jQuery('#foo');声明文件
通常我们会把声明语句放到一个单独的文件(jQuery.d.ts)中,这就是声明文件,声明文件必需以 .d.ts 为后缀。
typescript
// src/jQuery.d.ts
declare var jQuery: (selector: string) => any;typescript
// src/index.ts
jQuery('#foo');一般来说,ts 会解析项目中所有的 *.ts 文件,当然也包含以 .d.ts 结尾的文件。所以当我们将 jQuery.d.ts 放到项目中时,其他所有 *.ts 文件就都可以获得 jQuery 的类型定义了。
假如仍然无法解析,那么可以检查下 tsconfig.json 中的 files、include 和 exclude 配置,确保其包含了 jQuery.d.ts 文件。
第三方声明文件
jQuery 的声明文件不需要我们定义了,社区已经帮我们定义好了。可以直接下载下来使用,但是更推荐的是使用 @types 统一管理第三方库的声明文件。
@types 的使用方式很简单,直接用 npm 安装对应的声明模块即可,以 jQuery 举例:
typescript
npm install @types/jquery --save-dev搜索你需要的声明文件:https://www.typescriptlang.org/dt/search/