7、TypeScript类型、接口、类、泛型综合使用 -- TypeScript封装统一操作Mysql Mongodb Mssql的底层类库。

时间:2024-05-01 07:34:02
功能:定义一个操作数据库的库,支持Mysql Mssql Mongodb
要求:Mysql Mssql 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数据库类 注意:要实现泛型接口 这个类应该是一个泛型类。
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);