zoukankan      html  css  js  c++  java
  • TypeScript 第六讲 ———— TypeScript 泛型

    前言:

    泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵话的功能。

    在像c和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。这样 用户就可以以自己的数据类型来使用组件。

    通俗理解,泛型就是解决类接口方法的复用性、以及对不特定数据类型的支持

    下面这种就只能返回string类型的数据:
    function getData(value:string):string{
      return value;
    }

    any放弃了类型检查,不管什么类型都可以

    泛型

    可以支持不特定的数据类型

    要求:传入你的参数和返回的参数一致

    T表示泛型,具体什么类型是调用这个方法的时候决定的

    function getData<T>(value:T):T{
      return value;
    }
    getData<number>(123);

    泛型类:

    比如有个最小的算法,需要同时支持返回数字和字符串两种类型。通过类的泛型来实现

    class  MinClass<T>{
    
      public list:T[] = [];
    
      add(num:T){
    
        this.list.pust(num);
    
      }
    
      min():T{
    
        var minNum = this.list[0];
    
        for(var i = 0;i<this.list.length;i++){
    
          if(minNum>this.list[i]){
    
            minNum = this.list[i];
    
          }
    
        }
    
        return minNum;
    
      }
    
    }
    
    var m1 = new MinClas<number>();
    
    var m2 = new MinClas<string>();
    
    m1.add(1);
    
    m1.add(3);
    
    m2.add(a);
    
    m2.add(f);

    泛型接口

    第一种

    interface configFn{
    
      <T>(value1:T,value2:T):T;
    
    }
    var setData:configFn = function(value1:T,value2:string):T{
    
      return value1+value2;
    
    }
    
    setData<string>(‘name’,‘张三’);

    第二种

    interface configFn<T>{
    
      (value1:T,value2:T):T;
    
    }
    function getData<T>(value1:T,value2:string):T{
    
      return value1+value2;
    
    }
    
    var myGetData:configFn<string> = getData;
    
    myGetData("20","23");
    山重水复疑无路,柳暗花明又一村! 专注填坑,少走弯路!
  • 相关阅读:
    CodeForces 404C Restore Graph (构造)
    UVa 1204 Fun Game (状压DP)
    HDU 5038 Grade (水题,坑题)
    mybatis整合Spring编码
    关于Spring MVC写的不错的几篇博客
    SpringMVC配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven />
    常见文件下载后缀
    Spring MVC
    Spring
    反射
  • 原文地址:https://www.cnblogs.com/mqflive81/p/11530829.html
Copyright © 2011-2022 走看看