背景:当使用第三方库的时候,很多第三方库不是通过ts写的,而是使用原生的js或者浏览器或者是nodejs提供好的对象,直接使用的话,ts会报错
1.比如在ts中使用jq库,一种常见的方式是在html中通过script标签引进,然后就可以全局使用,通常这么来获取元素
但是ts并不知道$或者jquery是什么样的东西,所以会报错,这时候我们可以使用declaer关键词来告诉ts这个变量在其他地方已经被定义了,可以直接拿来用
通常这种声名语句会放在一个单独的声名文件中,这个文件以.d.ts结尾的d就代表声名的意思,说明该文件只有适配ts的类型声名,这里定义的declare var并没有真的定义一个变量的实现,只是定义了全局变量jQuery的类型,仅仅用于编译时候的检查,并不是实现功能的真正的代码,有了这个文件,就可以享受ts带来的福利了,其他地方使用都会获得对应的代码补全,接口提示等功能
这时就不会报错了
使用第三方库的时候,是不是要从头到尾declare一大堆呢,不用,有第三方声名文件,社区或者官方早就给写好了,比如jq的直接安装他的类型文件就可以了
现在很多库源代码自带types定义,用npm install安装某个库的时候,它的类型定义也包含其中,不需要使用的时候先安装本体再安装@types类型文件