TypeScript 类型、接口、类、泛型综合使用
TypeScript 封装统一操作Mysql Mongodb Mssql 的底层库
功能:定义一个操作数据库的库 支持 Mysql 、Mongodb 、Mssql
要求1:Mysql 、Mongodb 、Mssql 功能一样,都有 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 MysqlDb<T> implements DBI<T> {
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.");
}
}
// MssqlDb 的类
class MssqlDb<T> implements DBI<T> {
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.");
}
}
// MongoDb 的类
class MongoDb<T> implements DBI<T> {
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.");
}
}
// 操作用户表 定义一个 user 类和数据库表做映射
class User {
username: string | undefined
password: string | undefined
}
let u = new User()
u.username = '001'
u.password = '123456'
let mysql = new MysqlDb<User>() // 类作为参数来约束数据传入的类型
let mssql = new MssqlDb<User>() // 类作为参数来约束数据传入的类型
let mongodb = new MongoDb<User>() // 类作为参数来约束数据传入的类型
mysql.add(u)
mssql.add(u)
mongodb.add(u)