1. 程式人生 > 實用技巧 >7、TypeScript型別、介面、類、泛型綜合使用 -- TypeScript封裝統一操作Mysql Mongodb Mssql的底層類庫。

7、TypeScript型別、介面、類、泛型綜合使用 -- TypeScript封裝統一操作Mysql Mongodb Mssql的底層類庫。

功能:定義一個操作資料庫的庫,支援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);