位置:首页 > web前端 > typescript

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>();  //字符串类型

以上就是关于类泛型的基本介绍和实际案例,如有不足之处,还请大家批评指正。

24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看