我爱模板网 > 建站教程 > JS、jQ、TS >  typescript接口和泛型的简单示例正文

typescript接口和泛型的简单示例

通过typescript的泛型和接口,定义一个操作数据库的库,支持MySql、MongoDb

要求:MySql、MongoDb功能一样,都有四个方法:add、update、delete和get方法

注意:约束统一的规范,注意代码重用

解决方案:需要约束规范所以要定义接口,需要代码重用所以要用到泛型
    1、接口:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范
    2、泛型:泛型就是解决类、接口方法的复用性
//接口事先约定好有哪些方法,所有的数据库操作类都要实现这个接口
interface DBI<T>{
    add(info:T):boolean;
    update(info:T, id:number):boolean;
    delete(id:number):boolean;
    get(id:number):any;
}

//操作mysql的类
//注意:要实现泛型接口,这个类也要是泛型,MySqlDb后面也要跟上泛型,否则报错
class MySqlDb<T> implements DBI<T>{
    constructor(){
        console.log('连接mySql数据库')
    }
    add(info:T):boolean{
        console.log(info);
        return true;
    }
    update(info:T,id:number):boolean{
        return true;
    }
    delete(id:number):boolean{
        return true
    }
    get(id:number):any[]{
        let list:any[] = [];  //数据库得到的数据
        return list
    }
}

//操作MongoDb的类
//注意:要实现泛型接口,这个类也要是泛型,MongoDb后面也要跟上泛型,否则报错
class MongoDb<T> implements DBI<T>{
    constructor(){
        console.log('连接MongoDb数据库')
    }
    add(info:T):boolean{
        console.log(info);
        return true;
    }
    update(info:T,id:number):boolean{
        return true;
    }
    delete(id:number):boolean{
        return true
    }
    get(id:number):any[]{
        let list:any[] = [];  //数据库得到的数据
        return list
    }
}

//定义用户表做映射
class User{
    username:string | undefined;
    password:string | undefined;
}

//操作
let u = new User();
u.username = '111';
u.password = '222';
let sql = new MySqlDb<User>();  //用User类来约束传入的合法性
sql.add(u);


部分素材资源来源网站,本站提供免费下载,如有侵权请联系站长马上删除!
上一篇:使用变量作为key值和键值创建JavaScript对象 下一篇:事件获取目标currentTarget、target、srcElement三者之间的区别和联系
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
选择头像:
最新评论

猜你喜欢