类型声明文件 以d.ts结尾
在axiosDemo中的mode_moudules中就有index.d.ts文件
TS中的两种文件类型
1. .ts文件
- 即包含类型文件又可执行代码
- 可以编译为.js文件,再执行代码
- 是编写程序代码的地方
2. .d.ts文件 (DefinitelyTyped)
- 只包含类型信息的类型声明文件
- 不会生成.js文件,仅用于提供类型信息
- 为js提供类型信息
总结: .ts是implementation(代码实现文件); .d.ts是declaration(类型声明文件)
使用类型声明文件
- 先使用现有的类型声明文件
- 再创建自己的类型声明文件
就是先学会别人的使用方式,再自己创建使用
现有的类型声明文件
在axiosDemo中的mode_moudules中就有index.d.ts文件
如何使用
在项目的根目录中会有一个package.json文件
里面有一些配置项,其中types|typeing就是用来配置类型声明文件的
由DefinitelyTyped提供
- DefinitelyTyped是一个github仓库,用来提供高质量的ts类型声明文件
- 可以npm | yarn 下载ts类型声明包 这些包的名称格式为:@types/*
- 比如@type/react 等
- 当安装了类型声明包以后,ts会自动加载该类声明包,以提供该库的类型声明
自己的类型声明文件
- 创建index.d.ts类型声明文件
- 创建需要共享的类型,使用export导出
- 在需要使用共享类型的.ts文件中,import导入即可(.d.ts导入后缀必须省略)
注意:.d.ts文件名称不要和.ts的重名
为已有js文件提供类型声明
- js项目迁移到ts项目,让已有的js文件有类型声明
- 成为库作者,创建库给其他人使用
注:类型声明文件的编写与模块化方式相关,不同的模块化方式有不同的写法
- TS项目中也可以使用.js文件
- 在导入.js文件时,TS会自动加载与.js同名的.d.ts文件,以提供类型声明
declare关键字
- 用于类型声明,为其他地方(.js文件)已存在的变量声明类型,恶如不是创建一个新的变量
- 对于type、interface等这些明确就是TS类型的(只能在TS中使用的),可以省略declare
- 对于let、function等具有双重含义(在JS、TS中都能用),应该使用declare关键字,明确指定这里是用于类型声明