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;ithis.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{
//     public list:T[]=[];
//     add(value:T):void{
//         this.list.push(value);
//     }
//     min():T{        
//         var minNum=this.list[0];
//         for(var i=0;ithis.list[i]){
//                 minNum=this.list[i];
//             }
//         }
//         return minNum;
//     }
// }
// var m1=new MinClas();   //实例化类 并且指定了类的T代表的类型是number
// m1.add(11);
// m1.add(3);
// m1.add(2);
// alert(m1.min())
// var m2=new MinClas();  //实例化类 并指定定了类的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{
    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();
// 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();
// Db.add(a);
//修改数据
var a=new ArticleCate({
        title:'分类111',
        desc:'2222'      
});
a.status=0;
var Db=new MysqlDb();
Db.updated(a,12);

你可能感兴趣的:(TypeScript 泛类)