一、TypeScript模块使用
1. TypeScript模块化
- TypeScript中最主要使用的模块化方案就是ES Module
export function add(num1: number, num2: number) {
return num1 + num2
}
2. 非模块
- 什么是一个模块
- JavaScript规范声明任何没有export的JavaScript文件都应该被认为是一个脚步,而非一个模块
- 在一个脚本文件中,变量和类型会被声明在共享的全局作用域,将多个输入文件合并成一个输出文件,或者在HTML使用多个<script>标签加载这些文件
- 模块处理
- 如果一个文件,没有任何import或者export,但是希望被作为模块化处理,可以添加一行代码:
export {}
- 这会把文件改成一个没有导出任何内容的模块
3. 内置类型导入
- TypeScript允许单独的导入,需要使用type前缀,表明被导入的是一个类型
import { type IFoo, type IDType } from ""./foo
const id: IDType = 100
const foo: IFoo = {
name: "why",
age: 18
}
二、TypeScript命名空间
- 命名空间namespace
- 命名空间在TypeScript早期时,称之为内部模块,目的是将一个模块内部在进行作用域的划分,防止一些命名冲突的问题
- 虽然命名空间没有被放弃,但是由于ES模块已经拥有了命名空间的大部分特性,因此更推荐ES模块,这样才能与JavaScript的发展方向保持一致
三、内置声明文件的使用
- .d.ts文件
- 是用来做类型的声明,称之为类型声明或者类型定义文件
- 仅仅用来做类型监测,告知TypeScript有哪些类型
- TypeScript在哪里查找类型声明
四、第三方库声明的文件
- 内置类型声明
- 内置类型声明是TypeScript自带的,内置了JavaScript运行时的一些标准化API的声明文件
- TypeScript使用模式声明这些声明文件lib.[somthing].d.ts
- 内置声明的环境
- 可以通过target和lib来决定哪些内置类型声明是可以使用的
五、编写自定义声明文件
- 第三方库
- 外部类型声明通常是使用一些库时,需要的一些类型声明
- 声明方式一:在自己库中进行类型声明(编写.d.ts文件),比如axios
- 声明方式二:通过社区的一个公有库DefinitelyTyped存放类型声明文件
- 自定义声明
- 场景一:使用的第三方库是一个纯JavaScript库,没有对应的声明文件,比如lodash
- 场景二:给自己的代码中声明一些类型,方便在其他地方直接进行使用
- declare
六、tsconfig配置文件解析
- 认识tsconfig.json文件
- 作用一:让TypeScript Compiler在编译的时候,知道如何去编译TypeScript代码和进行类型监测
- 让编辑器可以按照正确的方式识别TypeScript代码
- tsconfig.json配置
- 在调用tsc命令并且没有输入其他文件参数时,编译器将由当前目录开始向父级目录寻找包含tsconfig文件的目录
- 调用tsc命令并且没有输入其他文件参数,可以使用--project(-p)的命令行选项来指定tsconfig.json的目录
- 当命令行中指定了输入文件参数,tsconfig.json文件会被忽略