TypeScript 声明文件
当引入第三方库时,我们会使用这些库 export 的变量,这时需要引用它的声明文件,其中一般包含对该库所提供变量的声明,和相应数据类型的定义,以便 ts 编译器可以识别这些变量,而不会在编译时报错,同时获得代码补全、接口提示等功能。
通常我们会把这些声明语句放到一个单独的文件中,声明文件必需以 .d.ts
为后缀(d
stand for define),例如 jQuery.d.ts
js
// src/jQuery.d.ts
declare var jQuery: (selector: string) => any;
Tip
项目中有声明文件,但仍然无法解析,可以检查配置文件 tsconfig.json
中的 files
、include
和 exclude
配置,确保其包含了 jQuery.d.ts
文件。
一般第三方库的 ts 声明文件不需要我们定义,社区已经帮我们定义好了,例如jQuery in DefinitelyTyped 可以直接下载使用,但是更推荐的是使用 @types
统一安装管理第三方库的声明文件,直接用 npm 安装对应的声明模块即可:
bash
npm install @types/jquery --save-dev
Tip
可以在这个页面搜索常见的第三方库的声明文件。
如果第三方库没有提供声明文件时,需要自己书写声明文件,在不同的场景下,声明文件的内容和使用方式会有所区别,常用的语法如下,更具体的说明可以参考这一篇文章:
declare var
声明全局变量declare function
声明全局方法declare class
声明全局类declare enum
声明全局枚举类型declare namespace
声明(含有子属性的)全局对象interface
和type
声明全局类型export
导出变量export namespace
导出(含有子属性的)对象export default
ES6 默认导出export =
commonjs 导出模块export as namespace
UMD 库声明全局变量declare global
扩展全局变量declare module
扩展模块///
三斜线指令
Warning
声明语句中只能定义类型,切勿在声明语句中定义具体的实现