美文网首页
Typescript 使用接口 泛型 类实现操作多种数据库的库

Typescript 使用接口 泛型 类实现操作多种数据库的库

作者: Betterthanyougo | 来源:发表于2020-05-05 22:48 被阅读0次

    功能:定义一个操作数据库的库 支持mysql mssql MongoDb
    要求:mysql mssql MoingoDb功能一样 都有add update delete get 方法
    注意:约束统一规范 以及代码重用
    1、首先用接口定义一个规范,规范里确定使用该接口的类要实现的方法

    interface DBI<T>{
        add(value:T):boolean
        update(value:T,id:number):boolean
        delete(id:number):boolean
        get(id:number):any
    }
    

    2、实现泛型类 要实现泛型接口 这个类必须是泛型类!!!

    class mysqlDb<T> implements DBI<T>{
        add(value: T): boolean {
            return true
        }
        update(value: T, id: number): boolean {
            return true
        }
        delete(id: number): boolean {
            return true
        }
        get(id: number): any[] {
            var list=[
                {
                    id:1,
                    name:'aaa'
                },
                {
                    id:2,
                    name:'bbb'
                }
            ]
            return list
        }
    }
    //实现mongoDb类
    class MongoDb<T> implements DBI<T>{
        add(value: T): boolean {
            return true
        }
        update(value: T, id: number): boolean {
            return true
        }/*  */
        delete(id: number): boolean {
            return true
        }
        get(id: number): boolean {
            return true
        }
    }
    

    3、定义类 当做约束

    class User{
        username:string | undefined;
        password:string | undefined;
    }
    class Artical{
        title:string | undefined;
        desc:string | undefined;
        type:number | undefined;
    }
    4、实例化类
    var u = new User()
    var a = new Artical()
    
    u.username='张三'
    u.password='123456'
    
    a.title='一本书'
    a.desc='这是一本好书'
    a.type=1
    
    var mysql=new mysqlDb<User>()
    var mongoDb=new MongoDb<Artical>()
    
    mysql.add(u)
    mongoDb.update(a,1)
    

    泛型接口 -> 泛型类 -> 传入参数(user类 | Artical类 实例化的对象)
    反过来看 user类 | Artical类实例化后传入泛型类 泛型类又遵从泛型接口 其实传入参数是受限制于最初始的泛型接口 从而实现限制传入该方法的数据

    相关文章

      网友评论

          本文标题:Typescript 使用接口 泛型 类实现操作多种数据库的库

          本文链接:https://www.haomeiwen.com/subject/ptlbghtx.html