Typescript类型、接口、类、泛型综合使用
程序员文章站
2022-07-12 15:54:07
...
功能:定义一个操作数据库的库,支持Mysql Mssql MongDb
要求:
- Mysql Mssql MongoDb功能一样
- 都有add update delete get方法
注意:约束统一规范,代码复用
解决方案:
- 用接口约束规范
- 用泛型实现复用
interface DBI<T>{
add(info: T):boolean;
delete(id: number):boolean;
update(info: T, id: number): boolean;
get(id: number):any[];
}
class MysqlDb<T> implements DBI<T>{
constructor(){
console.log('建立连接...');
}
add(info: T):boolean{
return true;
}
update(info: T, id: number): boolean{
return true;
}
delete(id: number): boolean{
return true;
}
get(id: nunber): any[]{
return [];
}
}
class MssqlDb<T> implements DBI<T>{
constructor(){
console.log('建立连接...');
}
add(info: T):boolean{
return true;
}
update(info: T, id: number): boolean{
return true;
}
delete(id: number): boolean{
return true;
}
get(id: nunber): any[]{
return [];
}
}
class MongoDb<T> implements DBI<T>{
constructor(){
console.log('建立连接...');
}
add(info: T):boolean{
return true;
}
update(info: T, id: number): boolean{
return true;
}
delete(id: number): boolean{
return true;
}
get(id: nunber): any[]{
return [];
}
}
class User{
userName: string | undefined;
password: string | undefined;
}
let u = new User();
u.userName = '张三';
u.paddword = '123456';
let sql = new MysqlDb<User>();
sql.add(u);
let msSql = new MssqlDb<User>();
sql.add(u);