欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Typescript类型、接口、类、泛型综合使用

程序员文章站 2022-07-12 15:54:07
...

功能:定义一个操作数据库的库,支持Mysql Mssql MongDb

要求:

  1. Mysql Mssql MongoDb功能一样
  2. 都有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);