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>(); //字符串类型
以上就是关于类泛型的基本介绍和实际案例,如有不足之处,还请大家批评指正。
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧