汽车网站网页设计,网站热力图怎么做,wordpress选项卡怎么设置,php视频网站怎么做泛型#xff08;宽泛的#xff0c;不确定的类型#xff09;
使用场景#xff1a;定义一个函数或类时#xff0c;无法确定要使用的具体类型#xff08;返回值、参数、属性的类型不能确定#xff09;泛型使用时相当于一个参数
functiondemoT(arg: T): T{return …泛型宽泛的不确定的类型
使用场景定义一个函数或类时无法确定要使用的具体类型返回值、参数、属性的类型不能确定泛型使用时相当于一个参数
functiondemoT(arg: T): T{return arg;
}
// 泛型T可以看做一个变量
demonumber(10)
demostring(你好)
// 基本类型可以不加泛型
demo(true)
demo(10)泛型结合接口
interface ParamA,B {title: string,state: A,list: B[]
}type ListType {name:string,age:number}
const p1: Paramboolean,ListType {title: 泛型和接口结合使用,state: true,list: [{name:张三,age:18},{name:李四,age:16},]
}泛型继承
// 泛型的继承对泛型的约束
function getLengthT extends { length:number }(arg: T): number{return arg.length;
}
getLength([1,2,3,4]) // 4
getLength(nihao) // 5function getLengthT extends string | any[](arg: T): number{return arg.length;
}
getLength([1,2,3,4]) // 4// 当使用T[]时T表示的是数组参数的元素类型
function getLengthT(arg: T[]): number{return arg.length;
}
getLengthstring | number([张三,李四,10]) // 3类中使用泛型
// 类中使用泛型
class MyClassT{prop: T;constructor(prop: T){this.prop prop;}
}
// 泛型是一个type
type User {name:string,age:number}
const user1:User {name:张三,age:18}
const c1 new MyClassUser( user1 )
// 泛型是基本类型
const c2 new MyClassstring(张三)