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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM