7、TypeScript型別、介面、類、泛型綜合使用 -- TypeScript封裝統一操作Mysql Mongodb Mssql的底層類庫。
阿新 • • 發佈:2020-08-18
功能:定義一個操作資料庫的庫,支援MysqlMssqlMongodb
要求:MysqlMssqlMongodb功能一樣都有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資料庫類 注意:要實現泛型介面 這個類應該是一個泛型類。 class MysqlDbs<T> implements DBI<T>{ constructor(){ console.log('建立連線成功'); } add(info: T): boolean{ console.log(info); return true; } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean { throw new Error("Method not implemented."); } get(id: number): any[] { throw new Error("Method not implemented."); } }// 定義一個操作mssql資料庫的類 class MssqlDBs<T> implements DBI<T>{ constructor(){ console.log('建立連線成功'); } add(info: T): boolean { throw new Error("Method not implemented."); } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean{ throw new Error("Method not implemented."); } get(id: number): any[] { var list = [ { title:'垃圾箱', desc:'華展智慧垃圾箱' }, { title:'候車廳', desc:'華展智慧候車廳' } ] return list; } } // 操作使用者表 定義一個user類和資料表做對映 class User{ username:string | undefined; password:string | undefined; } var u = new User(); u.username = 'root'; u.password = '123456'; var oMysql = new MysqlDbs<User>();//類作為引數來約束資料傳入的型別 oMysql.add(u); var oMssql = new MssqlDBs<User>(); var data = oMssql.get(4); console.log(data);