返回文稿
/前端开发/3 min

Generics 泛型

从一个像素点开始扩散,把鼠标移动变成一层若隐若现的水面。

Generics 泛型

泛型是什么?

泛型就是“类型的参数”。它像是一个类型的占位符,在定义函数、接口或类时不预先指定具体类型,而是在真正使用时才传入具体类型。

泛型能做什么?

实现“一套代码,多种类型复用”。它既能让你写出通用的组件(比如通用的数组方法、API请求工具),又能完美保留输入和输出之间的类型关联,不丢失类型信息。

为什么需要泛型?

为了在灵活与安全之间找到完美平衡。如果写死类型,代码无法复用;如果用 any,会失去类型检查导致隐患。泛型完美解决了这个问题,既避免了代码重复,又保证了绝对的类型安全。

标注一个函数类型

通常在没有掌握泛型之前,会写出以下代码:

TS

这样的话使用 ts 就完全没有起到类型约束的作用,无法在编译期就识别到可能的风险。

学了简单泛型之后可以优化成:

TS

标注函数类型的多种写法:

TS

泛型就是一个类型参数,会把捕捉参数的类型,然后保存起来,后续就能使用该类型。

泛型约束

可以使用 extends 关键字来约束泛型

TS

默认参数

在通过 extends 约束之后还可以增加一个默认类型

TS

逆变和协变