zoukankan      html  css  js  c++  java
  • TypeScript泛型类

    /*
    
    TypeScript泛型类 - 把类作为参数类型的泛型类
       
    */
    
    /*
    
    泛类:泛型可以帮助我们避免重复的代码以及对不特定数据类型的支持(类型校验),下面我们看看把类当做参数的泛型类
    
    1、定义个类
    2、把类作为参数来约束数据传入的类型 
    
    
    */
    
    //比如有个最小堆算法 普通类型
    
    // class MinClass{
    //     public list:number[]=[];
    //     add(num:number){
    //         this.list.push(num)
    //     }
    //     min():number{
    //         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 MinClass();   
    // m1.add(11);
    // m1.add(3);
    // m1.add(2);
    // alert(m1.min())
    
    
    
    
    
    
    //类的泛型
    // class MinClas<T>{
    //     public list:T[]=[];
    //     add(value:T):void{
    //         this.list.push(value);
    //     }
    //     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>();   //实例化类 并且指定了类的T代表的类型是number
    // m1.add(11);
    // m1.add(3);
    // m1.add(2);
    // alert(m1.min())
    
    
    
    // var m2=new MinClas<string>();  //实例化类 并指定定了类的T代表的类型是string
    // m2.add('c');
    // m2.add('a');
    // m2.add('v');
    // alert(m2.min())
    
    
    /*
    定义一个User的类这个类的作用就是映射数据库字段  
    然后定义一个 MysqlDb的类这个类用于操作数据库   
    然后把User类作为参数传入到MysqlDb中
    
    var user=new User({
        username:'张三',
        password:'123456'
    })
    
    var Db=new MysqlDb();
    Db.add(user);
    
    */
    
    
    
    //把类作为参数来约束数据传入的类型 
    
    // class User{
    //     username:string | undefined;
    //     pasword:string | undefined;
    // }
    
    
    // class MysqlDb{
    //     add(user:User):boolean{
    
    //         console.log(user);
    //         return true;
    //     }
    
    // }
    // var u=new User();
    // u.username='张三';
    // u.pasword='123456';
    // var Db=new MysqlDb();
    // Db.add(u);
    
    
    
    
    
    
    
    
    
    // class ArticleCate{
    //     title:string | undefined;
    //     desc:string | undefined;
    //     status:number | undefined
    // }
    
    
    // class MysqlDb{
    //     add(info:ArticleCate):boolean{
    //         console.log(info);
    //         console.log(info.title);
    //         return true;
    //     }
    
    // }
    // var a=new ArticleCate();
    // a.title="国内";
    // a.desc="国内新闻";
    // a.status=1;
    
    // var Db=new MysqlDb();
    // Db.add(a);
    
    // 问题:代码重复
    
    
    
    
    //定义操作数据库的泛型类
    class MysqlDb<T>{
        add(info:T):boolean{
            console.log(info);       
            return true;
        }
        updated(info:T,id:number):boolean {
            console.log(info);  
            
            console.log(id); 
    
            return true;
        }
    }
    
    
    //想给User表增加数据
    
    // 1、定义一个User类 和数据库进行映射
    
    // class User{
    //     username:string | undefined;
    //     pasword:string | undefined;
    // }
    // var u=new User();
    // u.username='张三';
    // u.pasword='123456';
    // var Db=new MysqlDb<User>();
    // Db.add(u);
    
    
    
    //2、相关ArticleCate增加数据  定义一个ArticleCate类 和数据库进行映射
    
    
    class ArticleCate{
        title:string | undefined;
        desc:string | undefined;
        status:number | undefined;
        constructor(params:{
            title:string | undefined,
            desc:string | undefined,
            status?:number | undefined
        }){
    
            this.title=params.title;
            this.desc=params.desc;
            this.status=params.status;
    
    
        }
    }
    //增加操作
    // var a=new ArticleCate({
    //     title:'分类',
    //     desc:'1111',
    //     status:1
    // });
    
    // //类当做参数的泛型类
    // var Db=new MysqlDb<ArticleCate>();
    // Db.add(a);
    
    //修改数据
    var a=new ArticleCate({
            title:'分类111',
            desc:'2222'      
    });
    
    a.status=0;
    var Db=new MysqlDb<ArticleCate>();
    Db.updated(a,12);
  • 相关阅读:
    [ACM] POJ 3687 Labeling Balls (拓扑排序,反向生成端)
    xml和json选择奖
    android 如何分析java.lang.IllegalArgumentException: Cannot draw recycled bitmaps异常
    代码农民提高生产力
    &#39;Basic&#39; attribute type should not be a persistence entity/a container
    13 适配器
    密码学基础知识(四)分组密码
    PKCS #1 RSA Encryption Version 1.5 填充方式
    rsa加密--选择padding模式需要注意的问题。。。
    RSA PKCS1 填充方式
  • 原文地址:https://www.cnblogs.com/loaderman/p/11040494.html
Copyright © 2011-2022 走看看