zoukankan      html  css  js  c++  java
  • TypeScript入门(三)

    一些定义性的文字也是截取的能够从页面上了解意思,别人总结还是很有用的,更加深刻一些;

    泛型: 软件工程中,在创建一致的定义良好的api时也要考虑到可重用性;组件不仅能够支持当前的数据类型,同时也能够支持未来数据类型;

    泛型就是解决 类 接口 方法的复用性,以及对不特定数据类型的支持;要求:输如的参数很返回的参数一致;

    (1)泛型变量,类;

    //1.同时返回string或number类型
    //any虽然可以,但是放弃了类型检查在return时候;现在需要传入某种类型,返回也是该类型;
    // T表示泛型,具体什么类型是调用这个方法的时候决定的
    
    function getData<T>(value: T):T {
       return value;
    }
    getData<number>(123) //<>和()数据类型一致;
    
    //2.泛型类,比如最小堆算法,需要同时支持返回数字和字符串两种类型。通过类的泛型来实现
    class MinClass{
      public list: number[] = [];
      add(num:number){
        this.list.push(num)
      }
      min(){
        var minNum = this.list[0];
        for(var i = 0; i < this.list.lenth;i ++){
           if(minNum > this.list[i]){
             minNum = this.list[i];
           }
        }
        return minNum;
      }
    }
    var m = new MinClass();
    m.add(2);
    m.add(32);
    m.min(); //2
    
    2.类的泛型
    class MinClass<T>{
      public list: T[] = [];
      add(value: T): void{
        this.list.push(value);
      }
      min(): T{
        for(var i = 0; i < this.list.lenth;i ++){
           if(minNum > this.list[i]){
             minNum = this.list[i];
           }
        }
        return minNum;
      }
    }
    var mi = new MinClass<number>(); //实例化类 并且制定了T代表的类型是number;
    mi.add(1);
    mi.add(5);
    mi.min(); //1

    (2)泛型接口

    //1.函数类型接口
    interface Config{
      (value1: string,value2: string): string;
    }
    var setData: ConfigFn = function(value1: string,value2: string): string{
      return value1 + value2;
    }
    setData('name','xiaoming');
    
    //2. 泛型接口
    interface Config{
      <T>(value: T): T;
    }
    var getData: ConfigFn = function<T>(value: T): T{
      return value;
    }
    getData<string>('xiaoming');
    //第二种方法
    var myGetData: ConfigFn<string> = getData;
    myGetData('12'); //必须和泛型接口类型一致;

    发现我跟人的学习方法还是比较笨的那种类型,很浪费时间,但是不敲又不能熟记,虽然敲了也不一定能记住;熟能生巧,哈哈。

  • 相关阅读:
    原码、反码、补码,计算机中负数的表示
    [转]Vue 2.0——渐进式前端解决方案
    关于MySQL的tinyint(3)问题
    js对象的深拷贝及其的几种方法
    深入 js 深拷贝对象
    JS 数组克隆方法总结
    Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
    邮件措辞小计
    Forbidden You don't have permission to access / on this server PHP
    正则表达式
  • 原文地址:https://www.cnblogs.com/naniandongzhi/p/10599995.html
Copyright © 2011-2022 走看看