typescript泛类型
dearweb
发布:2021-07-31 10:43:15阅读:
我们都知道c#和java这样的语言中,以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据,这样用户就可以按照自己的数据类型使用组件。所以泛类型通俗来理解就是就是解决类、接口方法的复用性、以及对不特定数据类型的支持,下面我们一起来了解它吧。
同时返回string和number类型 (es5的写法代码过于冗余)
function getData1(value:string):string{
return value
}
function getData2(value:number):number{
return value
}升级后的写法(any写法)
function getData(value:any):any{
return value
}any放弃的写法,传入什么,返回什么,比如传入number则返回number,传入string则返回string,而泛型可以支持不特定的数据类型,传入参数和返回的数据类型一致;
泛型函数:
// T表示泛型,具体什么类型是调用这个方法的时候决定的 T可以更换任意字母,但是三个需要统一
function getData<T>(value:T):T{
return value
}
getData<number>(135)
console.log(getData<number>(135)); // 135泛型类:比如有个最小堆算法,需要同时支持返回数字和字符串两种理性。通过类的泛型来实现
class MinClass {
public list:number[] = []
add(num:number){
this.list.push(num)
}
min():number{
let minNum = this.list[0]
for(let i=0;i<this.list.length;i++){
if(minNum > this.list[i]){
minNum = this.list[i]
}
}
return minNum
}
}
let m = new MinClass()
m.add(5);
m.add(15);
m.add(8);
m.add(9);
m.add(2);
console.log(m.min()) // 2类的泛型写法
// 类的泛型
class MinClass<T> {
public list: T[] = [];
add(value: T): void {
this.list.push(value)
}
min(): T {
let minNum = this.list[0]
for (let i = 0; i < this.list.length; i++) {
if (minNum > this.list[i]) {
minNum = this.list[i]
}
}
return minNum
}
}
let m1 = new MinClass<number>();
m1.add(558);
m1.add(548);
m1.add(15);
m1.add(68);
m1.add(38);
m1.add(29);
console.log(m1.min()); // 15
let m2 = new MinClass<string>(); //字符串类型以上就是关于类泛型的基本介绍和实际案例,如有不足之处,还请大家批评指正。
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧