功能:定义一个操作数据库的库,支持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);

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

  1. TypeScript封装统一操作Mysql Mongodb Mssql的底层类库demo

    /* 功能:定义一个操作数据库的库 支持 Mysql Mssql MongoDb 要求1:Mysql MsSql MongoDb功能一样 都有 add update delete get方法 注意:约 ...

  2. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

  3. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

  4. Typescript中的可索引接口 类类型接口

    /* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...

  5. typescript可索引接口 类类型接口

    /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据, ...

  6. java集合类型接口和实现类个人总结

    转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...

  7. TypeScript - 类型声明、枚举、函数、接口

    目录  可定义的类型  类型声明  枚举  函数  接口 可定义的类型 以下所写的并不代表typescript的数据类型,而是在使用过程中可以用作定义的类型 number : 数值类型: string ...

  8. TypeScript之接口类型

    Interfaces 作为TypeScript中的核心特色之一,能够让类型检查帮助我们知道一个对象应该有什么,相比我们在编写JavaScript的时候经常遇到函数需要传递参数,可能在编写的时候知道这个 ...

  9. typescript接口的概念 以及属性类型接口

    /* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 2.第二步 任务 ...

随机推荐

  1. Nginx配置中文参数说明

    #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debu ...

  2. python基础--函数全解析(2)

    函数的重点知识补充 (1)补充的两个小知识点(global,nonlocal) 1.global的使用 我们在补充这两个知识点之前,我们先看一下下面这个例子: a = 1 def func(): pr ...

  3. 渲染导航菜单的同时给每个菜单绑定不同的router跳转

    这个问题一开始的时候,我总想着router跳转只有两种方式 一种@click,一种router-link 然后我想着@click,绑定一个事件,事件下面无法确定我当前是哪个菜单,解决不了. 然后< ...

  4. Python os.write() 方法

    write()方法语法格式如下:高佣联盟 www.cgewang.com os.write(fd, str) 参数 fd -- 文件描述符. str -- 写入的字符串. 返回值 该方法返回写入的实际 ...

  5. PHP bindec() 函数

    实例 把二进制转换为十进制: <?phpecho bindec("0011") . "<br>";echo bindec("01&q ...

  6. P1429 平面最近点对[加强版] 随机化

    LINK:平面最近点对 加强版 有一种分治的做法 因为按照x排序分治再按y排序 可以证明每次一个只会和周边的六个点进行更新. 好像不算很难 这里给出一种随机化的做法. 前置知识是旋转坐标系 即以某个点 ...

  7. PAM学习笔记

    想了想 还是要先把字符串的东西先都学完告一段落了再说 时间不多了 加油~. PAM 回文自动机 比SAM简单到不知道哪里去了. 回文自动机和其他自动机一样有字符集 有状态 有转移. 一个字符串的回文自 ...

  8. Python PIL方式打开的图片判断维度

    1. PIL方式打开的图片判断维度    好久没更新啦,哈哈哈~~!今天跟宝宝们分享一篇如何判断灰度图像和彩色图像维度的方法.我们在读取灰度图像和彩色图像时,发现读取出来的图片维度不同,当我们要做后续 ...

  9. Python创建一个爬虫项目===从零开始哟!想说的下次 要不要出一期关于pycharm与Python之间的合作

    当然,不用爬虫框架,也是可以的 比如说 beauitfulsoup xml http 就可以完美的得到一个爬虫的解决方案! 个人的意思是,新手或者刚入门的可以考虑以上的方式进行练习后 在使用框架 首先 ...

  10. NameNode中的高可用方案

    NN中元数据的可靠性是可以保证的,但是其可用性并不高,因为Namenode是单节点的,所以一旦这个节点不能工作,那么整个hdfs都不能工作,但是由于SecondaryNameNode的机制,所以,即便 ...