在TypeScript中,使用泛型可以在定义函数、类或接口时 延迟指定具体的类型,从而增加代码的灵活性和重用性。泛型可以在不同场景下使用,包括数据结构、函数、类等。
泛型的基本用法
在函数中使用泛型
在函数中使用泛型可以允许函数接受不同类型的参数,而返回相应的类型
identity 函数可以适用于任何特定的类型👇
function identity<T>(arg: T): T {
return arg;
}
console.log(identity<string>("Hello!")); // Hello!
在接口中使用泛型
也可以在接口中使用泛型来定义参数的类型:
在类中使用泛型
在类中使用泛型可以用于指定类的属性、方法和构造函数的参数类型:
类型约束增加代码的灵活性和安全性
想限制泛型的类型范围以确保代码的安全性和一致性,可以使用类型约束,以增加代码的灵活性和安全性。
extends
可以使用 extends 关键字来约束泛型类型必须是某个类型的子类型:
多重类型约束
使用 & 运算符来进行多重类型约束:
keyof和索引类型
可以使用 keyof 关键字和索引类型来对泛型进行约束,使其只能接受某个类型的属性名:
通过这些泛型和类型约束的用法,可以使代码更具灵活性和安全性,减少潜在的错误, 在函数、类、接口等不同的上下文中使用泛型和类型约束,提高代码质量和可维护性。