Generics 泛型
泛型是什么?
泛型就是“类型的参数”。它像是一个类型的占位符,在定义函数、接口或类时不预先指定具体类型,而是在真正使用时才传入具体类型。
泛型能做什么?
实现“一套代码,多种类型复用”。它既能让你写出通用的组件(比如通用的数组方法、API请求工具),又能完美保留输入和输出之间的类型关联,不丢失类型信息。
为什么需要泛型?
为了在灵活与安全之间找到完美平衡。如果写死类型,代码无法复用;如果用 any,会失去类型检查导致隐患。泛型完美解决了这个问题,既避免了代码重复,又保证了绝对的类型安全。
标注一个函数类型
通常在没有掌握泛型之前,会写出以下代码:
TS
代码已折叠这样的话使用 ts 就完全没有起到类型约束的作用,无法在编译期就识别到可能的风险。
学了简单泛型之后可以优化成:
TS
代码已折叠标注函数类型的多种写法:
TS
代码已折叠泛型就是一个类型参数,会把捕捉参数的类型,然后保存起来,后续就能使用该类型。
泛型约束
可以使用 extends 关键字来约束泛型
TS
代码已折叠默认参数
在通过 extends 约束之后还可以增加一个默认类型
TS
代码已折叠