ts笔记-类型声明

全局类型声明

对于使用js编写的第三方库,通常可以在DefinitelyTyped中找到types包,比如jQuery。

npm install @types/jquery --save-dev

使用

// 即使没有手动引入,全局也都拥有类型提示
$.ajax()

原因:默认所有可见的"@types"包会在编译过程中被包含进来。 node_modules/@types文件夹下以及它们子文件夹下的所有包都是可见的; 也就是说, ./node_modules/@types/,../node_modules/@types/和../../node_modules/@types/等等。

如何手动管理types包

如果想要手动指定加载包,可以配置types选项,指定加载哪些包

{
   "compilerOptions": {
        "types" : [] // 如果配置为[],上面的$就没有提示了。改为["jquery"],就又拥有提示了
   }
}

自定义声明

如果想要为自己写的js库添加声明文件也很简单,在tsconfig的同级目录创建一个@types文件夹,根据上面说的types加载机制,@types目录下的包是可以自动加载进来的。但需要注意的是这里的类型声明是全局的,比如:

// @types/bar.d.ts 定义一个接口

interface Point {
    x: number,
    y: number
  }

// @types/bar.d.ts 声明一个全局变量
declare let point:Point
// 其他任何ts文件都有提示
const name1: Point = {
    x: 100
    y: 300
}

说明:根级别的声明都必须以 declare 关键字作为前缀,例如变量point

说明:对于这些影响全局的声明,通常建议放到一个统一文件中,比如global.d.ts。如果仅供某个文件使用,可以在ts文件中定义声明。

posted @ 2021-10-14 19:56  wmui  阅读(353)  评论(0编辑  收藏  举报