当我们在 TS 项目中直接使用第三方库中变量会报错,
Cannot find name 'jQuery'.
因为很多第三方库不是通过ts写的,而是使用原生的js或者浏览器或者是nodejs提供好的对象。
比如在ts中使用jquery库,一种常见的方式是在html中通过script标签引进,然后就可以全局使用,
但是ts并不知道$或者jquery是什么样的东西,所以会报错,
这时候我们可以使用declaer关键词来告诉ts,这个变量在其他地方已经被定义了,可以直接拿来用
// typings.d.ts
declare let jQuery: (selector: string) => any
通常这种声名语句会放在一个单独的声名文件中,这个文件以.d.ts结尾的d就代表声名的意思,说明该文件只有适配ts的类型声名,这里定义的declare let并没有真的定义一个变量的实现,只是定义了全局变量jQuery的类型,仅仅用于编译时候的检查,并不是实现功能的真正的代码,有了这个文件,就可以享受ts带来的福利了,其他地方使用都会获得对应的代码补全,接口提示等功能。
然后在tsconfig.json 文件中include上述声明文件typings.d.ts,重新运行后,三方库的变量就不会报错了
// tsconfig.json 该文件中include上述声明文件typings.d.ts
{
...
"include": ["src", "typings.d.ts"],
...
}
文件存放目录如下
当然不是所有的第三方库都需要我们手动声明,
很多库源代码自带types定义,用npm install安装某个库的时候,它的类型定义已经包含其中了。
也有很多三方库有社区或者官方给写好的声明文件,我们只需再单独安装下他的类型文件即可。
npm install --save @types/jquery
Type Search中收录了这些声明文件,我们可以进行查找并安装需要的声明文件。
另,项目中所有自定的一些全局变量都可以在typings.d.ts声明一下
网友评论