• 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);
  • 相关阅读:
    “无法更新EntitySet“*****”,因为它有一个DefiningQuery,而元素中没有支持当前操作的元素”问题的解决方法
    Web.Config全攻略
    C#常用的正则
    Asp.Net MVC2 Json
    webservice+Jquery返回Json格式【原创】
    JAVA线程池介绍以及简单实例
    从程序员到项目经理(17):你不是一个人在战斗思维一换天地宽
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    多表对应更新(跨服务器).sql
    sql导出excel.sql
  • 原文地址:https://www.cnblogs.com/loaderman/p/11040494.html
Copyright © 2020-2023  润新知