TypeScript-TypeScript知识扩展

31 阅读3分钟

一、TypeScript模块使用

1. TypeScript模块化

  • TypeScript中最主要使用的模块化方案就是ES Module
// export/import
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文件会被忽略