目录
前言
本文收录于TypeScript知识总结系列文章,欢迎指正!
代码复用是开发人员老生常谈的问题了,我们通过定义变量,使用函数或类减少代码重复编写。
在TS中我们可以把编写一个类型看成是新建一个函数,参数便是今天的主角:泛型,通过传入不同的参数(类型)控制类型的走向,达到类型复用的目的
定义
泛型类型是指一种不确定的类型,它允许开发者在定义函数、类、接口时不指定具体的类型,而是使用一个占位符类型,等到函数、类、接口被调用时再动态地传入具体类型,以便让它们适用于多种不同类型的数据。
使用泛型可以使代码更加通用、可复用、可扩展,提高代码的质量和可维护性。
基本用法
泛型使用尖括号<T>
表示,其中T
可以被任意字母替换,它代表一种类型,在使用时需要将其替换为具体的类型。
还记得之前数组的泛型写法吗?
const arr: Array<string> = ["a", "b"]
我们使用尖括号来标注泛型的实际类型
在JS中我们都会定义函数,每个函数的行为走向或许由参数决定,举个例子
type IObj = {
name?: string
}
interface ISetKey {
(obj: IObj, key: string): IObj
}
const setName: ISetKey = function (obj: IObj, name: string): IObj {
if (!!!obj.name) obj.name = name
return obj
}
const obj: IObj = setName({}, "张三")
上面这段代码,我实现了一个给对象设置值的函数,乍一看似乎没啥毛病,但是如果我给上述的代码增加一个age操作
type IObj1 = {
age?: number
}
const setAge: