深入浅出TypeScript学习笔记

224 阅读4分钟

深入浅出TypeScript

为什么要学习TS

1.png

ts带来了类型安全,下一代JS特性,完善的工具链,提高了生产力

TS基础

基础类型

  1. boolean: 代表布尔类型的值,只能为 true 或 false。
  2. number: 代表数字类型的值,包括整数和浮点数。
  3. string: 代表字符串类型的值,使用单引号或双引号括起来的字符序列。
  4. enum: 枚举类型,用于定义一组具名的常量,可以通过枚举成员的名称来引用对应的值。
  5. any: 代表任意类型,可以为任何类型的值。
  6. unknown: 类似于 any 类型,但是更加安全。当你不确定一个值的类型时,可以将它赋值为 unknown,必须进行类型检查或类型断言后才能使用。
  7. void: 代表没有返回值的函数的返回类型。
  8. never: 代表永远不会返回的函数的返回类型,或者表示抛出异常或进入无法结束的循环。
  9. 数组类型: 可以使用类型加上中括号 [] 来表示一个数组,例如 number[] 表示数字类型的数组。
  10. 元组类型: 元组用于表示一个固定长度的数组,每个元素可以有不同的类型。例如,[number, string] 表示包含一个数字和一个字符串的元组。

函数类型

定义:TS定义函数类型时要定义输入参数类型和输出类型

输入参数:参数支持可选参数和默认参数

输出参数:输出可以自动推断,没有返回值时,默认为void类型

函数重载:名称相同但参数不同,可以通过重载支持多种类型

接口

定义:接口是为了定义对象类型

特点:

可选属性:?

只读属性:readonly

可以描述函数类型

可以描述自定义属性

总结:接口非常灵活

定义:写法和JS差不多,增加了一些定义

特点:

增加了public、private、protected修饰符

抽象类:

只能被继承,不能被实例化

作为基类,抽象方法必须被子类实现

interface约束类,使用implements关键字

TS进阶

高级类型

1.联合类型 |

使用 | 符号表示,可以将多个类型组合到一起,表示变量可以是多种类型之一。例如,number | string 表示一个变量可以是数字或字符串类型。

2.交叉类型 &

使用 & 符号表示,可以将多个类型合并到一起,表示变量需要同时具备多种类型的特性。例如,A & B 表示一个变量同时具有类型 A 和类型 B 的特性。

3.类型断言

类型断言(Type Assertion): 类型断言用于手动指定变量的类型,通过将变量断言为特定类型,可以获得更精确的类型检查。有两种形式:尖括号语法 <类型>值 和 as 语法 值 as 类型。例如,let x: any = 'Hello'; let strLength: number = (x as string).length; 在这个例子中,我们通过类型断言将变量 x 断言为字符串类型,然后获取它的长度。

4.类型别名(type VS interface)

定义:给类型起个别名

相同点:

1.都可以定义对象或函数

2.都允许继承

差异点:

1.interface是TS用来定义对象,type是用来定义别名方便使用;

2.type可以定义基本类型,interface不行

3.interface可以合并重复声明,type不行

泛型

定义

软件工程中,我们不仅要创建一致定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。

基本使用

基本定义:

1.泛型的语法是<>里面写类型参数,一般用T表示

2.使用时有两种方法指定类型:

-1.定义要使用的类型

-2.通过TS类型推断,自动推导类型

3.泛型的作用是临时占位,之后通过传来的类型进行推导

基础操作符

typeof:获取类型

keyof:获取所有键

in:遍历枚举类型

T[k]:索引访问

extends:泛型约束

常用工具类型

Partial:<T>:将类型属性变为可选

Required<T>:将类型属性变为必选

Readonly<T>:将类型属性变为只读

Pick、Record...

TS实战

声明文件

declare:三方库需要类型声明文件

.d.ts:声明文件定义

@types:三方库TS类型包

tsconfig.json:定义TS的配置

个人感受

TypeScript 是 JavaScript 的超集,它为我们提供了更加强大的类型系统和静态类型检查,使我们能够在开发过程中更早地发现潜在的错误和问题。提供了丰富的类型系统,强大的工具支持等实用的功能,总的来说,学习 TypeScript 对于提升代码质量、增强可读性和可维护性至关重要。它为 JavaScript 开发提供了更严格的类型检查和更强大的工具支持,使得开发者能够更自信地编写高质量的代码。