zoukankan      html  css  js  c++  java
  • typescript泛型

    //泛型
    //泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持
    //可以支持不特定的数据类型,要求:传入的参数和返回的参数一致
    //T表示泛型(只要是任意大写字母就可以),具体什么类型就是调用这个方法的时候决定的
    function getData<T>(value:T):T{
        return value;
    }
    
    getData<number>(123)
    getData<string>('123')
    
    
    
    //泛型类
    class MinClass<T>{
        public list:T[] = [];
        add(value:T):void{
            this.list.push(value)
        }
        min():T{
            var minNum = this.list[0];
            this.list.map(item=>{
                if(minNum>this.list[i]){
                    minNum = this.list[i]
                }
            })
            return minNum
        }
    }
    
    let m1 = new MinClass<number>();//实力化类,并指定类的T类型代表number
    m1.add(2);
    m1.add(45);
    m1.add(34);
    m1.add(35);
    console.log(m1.min())
    
    
    
    //把类当作参数的泛型类
    class User{
        name:string|undefined;
        age:number|undefined;
        constructor(params:{
            name:string|undefined;
            age?:number|undefined;
        }){
            this.name = params.name;
            this.age = params.age;
        }
    }
    
    class MysqlObj<T>{
        add(user:T):void{
            console.log(user)
        }
    }
    
    let u = new User({
        name:'zhangsan',
        age:12
    })
    
    let ob = new MysqlObj<User>();//类当作参数的泛型类
    ob.add(u)
    
    
    
    //泛型接口(第一种)
    interface ConfigFn{
        <T>(value:T):T;
    }
    let getData2:ConfigFn = function<T>(value:T):T{
        return value;
    }
    getData2<string>('zhangsan');
    getData2<number>(123);
    
    
    
    //泛型接口(第二种)
    interface ConfigFn2<T>{
        (value:T):T;
    }
    function getData3<T>(value:T):T{
        return value;
    }
    let myGetData:ConfigFn2<string> = getData3;
    myGetData('20')
    getData2<number>(123);
  • 相关阅读:
    如何更专业的使用Chrome开发者工具
    Javascript中的Object对象
    【leetcode】 Remove Duplicates from Sorted List
    Windows上x86程序正常但x64程序崩溃问题
    Microsoft source-code annotation language (SAL) 相关
    Visual Studio 2013 编译CEF步骤
    C++中调用Python脚本
    MFCButton Memory leak(内存泄露问题)
    快速排序
    插入排序
  • 原文地址:https://www.cnblogs.com/kaiqinzhang/p/12937690.html
Copyright © 2011-2022 走看看