Typescript 使用接口 泛型 類實現(xiàn)操作多種數(shù)據(jù)庫的庫

功能:定義一個操作數(shù)據(jù)庫的庫 支持mysql mssql MongoDb
要求:mysql mssql MoingoDb功能一樣 都有add update delete get 方法
注意:約束統(tǒng)一規(guī)范 以及代碼重用
1、首先用接口定義一個規(guī)范,規(guī)范里確定使用該接口的類要實現(xiàn)的方法

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

2、實現(xiàn)泛型類 要實現(xiàn)泛型接口 這個類必須是泛型類!!!

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
    }
}
//實現(xiàn)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)

泛型接口 -> 泛型類 -> 傳入?yún)?shù)(user類 | Artical類 實例化的對象)
反過來看 user類 | Artical類實例化后傳入泛型類 泛型類又遵從泛型接口 其實傳入?yún)?shù)是受限制于最初始的泛型接口 從而實現(xiàn)限制傳入該方法的數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容