作用:为已存在的库,以及第三方包/库或自定义文件提供类型信息(也就是代码类型提示)
内置类型声明文件
作用:TS为JS运行时可用的所有标准化的内置API提供声明(就是JS中的代码提示)
具体怎么查看JS的‘数据’类型呢?
这个‘数据’类型指的不单单是JS原生的数据类型,还有TS所新增的数据类型,具体技巧如下:
可以通过 Ctrl + 鼠标左键(Mac:Command + 鼠标左键)来查看内置类型声明文件内容
-
查看 forEach 方法的类型声明,在 VSCode 中会自动跳转到
lib.es5.d.ts类型声明文件中 -
像 window、document 等 BOM、DOM API 也都有相应的类型声明(
**lib.dom.d.ts**)
第三方库/包的类型声明文件
对于为第三方模块/库写声明文件之前,我们需要知道第三方模块/库,是否需要声明文件,或者是否已有声明文件。
-
若第三方模块/库,是ts编写且无声明文件, 可以使用
--declaration配置选项来生成; 可以在命令行中添加 --declaration(简写 -d),或者在 tsconfig.json 中添加 declaration:true 选项 -
若第三方模块/库,是js编写,分为两种情况:
- 与该 npm 包绑定在一起,可以通过查找该库的
package.json中的types属性 - 发布到 @types 里,可以在官方提供的第三方声明文件库(microsoft.github.io/TypeSearch/…
- 与该 npm 包绑定在一起,可以通过查找该库的
注意如若上面的情况都不符合, 则需要我们自己手写声明文件
自带类型声明的库
这种无需任何处理,装完包之后就可以直接使用代码提示了
不带类型声明的库
这种一般来说都需要我们单独去下载
yarn add @type/库名
总的来说,并不是所有的第三方库都有TS声明文件,没有类型声明文件只是没有代码提示,并不会导致第三方库的功能不能用,对于这类库,微软内部人员为了自身使用和开源吧,就写了很多声明文件,从而能够更好地提高开发效率。
自定义文件的类型声明文件
场景:
-
项目内共享类型
-
为已有 JS 文件提供类型声明
步骤:
-
创建 index.d.ts 类型声明文件(后缀名为 .d.ts)。
-
创建需要共享的类型,并使用 export 导出(TS 中的类型也可以使用 import/export 实现模块化功能)。
-
在需要使用共享类型的 .ts 文件中,通过 import 导入即可(.d.ts 后缀导入时,直接省略)
示例:
//declare --用于类型声明,为其他已存在的变量声明类型,而不是创建一个新的变量
declare let Num:number
declare let Str:string
declare interface IPosition{
x:number,
y:number
}
export {Num,Str,IPosition}
注意:类型声明文件只是提供声明(代码类型提示),并不会提供逻辑代码