泛型,可以理解为更广泛的类型。也就是说我们在函数、接口、类等中,约束数据类型的时候,可以通过泛型的方式来实现类型的传参,让数据的类型也可以根据传递的类型值来控制。
一、函数中的泛型
1、定义泛型函数
基础语法:
function 函数名<类型变量>(参数名: 类型变量): 类型变量 {
return 返回值;
}
函数名<类型>(参数)
案例代码:
function getValue<T>(params: T): T {
return params;
}
getValue<string>('hello');
getValue<number>(100);
2、定义多个泛型变量
function getValue<T, U>(params: T, count: U): T {
return params;
}
getValue<string, number>('hello', 100);
getValue<boolean, number>(true, 100);
二、接口中的泛型
基础语法:
interface 接口名<类型变量> {
属性名: 属性类型,
属性名: 类型变量,
}
const 变量名: 接口名<类型> = ...
案例代码:
interface Info<T> {
id: number;
name: string,
age: T
}
let student: Info<number> = {
id: 1,
name: '张三',
age: 20
}
let users: Info<string> = {
id: 1,
name: '王五',
age: '30'
}
三、class 中的泛型
class 类名<类型变量>{
属性名:类型变量
constructor(参数名:类型变量){
}
方法名(参数名:类型变量):类型变量{
return 返回值
}
}
案例