美文网首页
在 typescript 中使用第三方库报错问题

在 typescript 中使用第三方库报错问题

作者: 很好就这样吧 | 来源:发表于2023-04-10 10:59 被阅读0次

    当我们在 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声明一下

    相关文章

      网友评论

          本文标题:在 typescript 中使用第三方库报错问题

          本文链接:https://www.haomeiwen.com/subject/dawiddtx.html