1. 概念:
child::泛型
2. 函数使用泛型参数的语法:
2.1. 声明函数语法:
function 函数名<泛型参数名 extends 其他类型 = 默认类型>(参数1: 类型): 类型 {
//代码中可以使用 泛型参数名 作为一种类型
}2.1.1. 说明:
2.1.1.1. 需要在函数名后加上<泛型参数名 extends 其他类型 = 默认值>
2.1.1.1.1. 其中extends 其他类型为可选参数, 是用来约束泛型的, 用来缩小泛型的类型范围, 详见泛型约束
2.1.1.1.2. 其中= 默认值为可选参数
2.2. 调用函数的语法:
函数名<实际数值的类型>(参数)2.2.1. 参数说明:
<实际数值的类型>通常省略, ts会根据传入实参的类型对泛型参数赋值
给泛型约束过的变量赋值的语法
实例:
function main<T extends string>(data: T) {
let rst: T
rst = <T>'6666'
//下面这个是错误的:(因为string不是T类型)
//rst = '6666'
return rst
}
console.log(main('df'))//6666实例:
function main<T extends string>(data: T) {
let rst: T[]
rst = <T[]>['6666']
return rst
}
console.log(main('df'))//['6666']3. 使用泛型参数的类的语法
3.1. 定义类语法:
与函数定义相同, 也是在类名后加上泛型参数
3.2. 使用带有泛型参数的类的构造方法创建对象语法:
new 类名<类型实参>()
3.2.1. 说明:
可以省略指定类型实参, 因为ts会自动推断类型
4. 类型使用泛型参数的语法:
4.1. 函数类型使用泛型参数语法:
函数:
<泛型参数名 extends 其他类型 = 默认值>(参数1: 类型)=> 返回类型;与函数类似
5. 接口使用泛型参数的语法:
5.1. 梗概:
定义接口时候, 在接口名字后面紧跟一个泛型参数 调用这个接口作为类型的时候, 要传入实际类型作为泛型的实参