/*

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

要求1:Mysql MsSql  MongoDb功能一样  都有 add  update  delete  get方法    

注意:约束统一的规范、以及代码重用

解决方案:需要约束规范所以要定义接口 ,需要代码重用所以用到泛型

    1、接口:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范
2、泛型 通俗理解:泛型就是解决 类 接口 方法的复用性、 */ //操作用户表 定义一个User类和数据表做映射 import {MsSqlDb} from './modules/db' class User{
username:string | undefined;
password:string | undefined;
} var u=new User();
u.username='张三2222';
u.password='123456'; var oMssql=new MsSqlDb<User>();
oMssql.add(u);
interface DBI<T>{
add(info:T):boolean;
update(info:T,id:number):boolean;
delete(id:number):boolean;
get(id:number):any[];
} //定义一个操作mysql数据库的类 注意:要实现泛型接口 这个类也应该是一个泛型类 export class MysqlDb<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[] {
var list=[ {
title:'xxxx',
desc:'xxxxxxxxxx'
},
{
title:'xxxx',
desc:'xxxxxxxxxx'
}
] return list;
} } //定义一个操作mssql数据库的类 export class MsSqlDb<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[] { var list=[ {
title:'xxxx',
desc:'xxxxxxxxxx'
},
{
title:'xxxx',
desc:'xxxxxxxxxx'
}
] return list;
} }

typeScript模块<四>的更多相关文章

  1. es6模块 nodejs模块和 typescript模块

    es6模块 import和export nodejs模块 require和module.exports typescript模块 module和export

  2. TypeScript模块系统、命名空间、声明合并

    命名空间 命名空间能有效避免全局污染.在ES6引入模块之后,命名空间就较少被提及了.如果使用了全局的类库,命名空间仍是一个好的解决方案. namespace Shape{ const pi = Mat ...

  3. typeScript模块<三>

    /*模块 1 模块的的概念 2 模块导出的几种方法 1.export 导出声明 2.export 导出语句 3.export default 4.import导入模块 3 模块化封装上一讲的DB库 * ...

  4. typeScript模块<二>

    /*模块 1 模块的的概念 2 模块导出的几种方法 1.export 导出声明 2.export 导出语句 3.export default 4.import导入模块 3 模块化封装上一讲的DB库 * ...

  5. typeScript模块<一>

    /*模块 模块的的概念 模块导出的几种方法 1.export 导出声明 2.export 导出语句 3.export default 4.import导入模块 模块化封装上一讲的DB库 */ /* 模 ...

  6. typescript 模块

    模块:模块可以帮助开发者将代码分割为重用的单元.开发者可以自己决定将模块中的哪些资源(类,方法,变量)暴露出去供外部使用,哪些资源只在模块内使用 在ts里面,一个文件就是一个模块,并没有什么特殊的标识 ...

  7. TypeScript 模块系统

    https://www.cnblogs.com/niklai/p/5808789.html

  8. 转载:《TypeScript 中文入门教程》 7、模块

    版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变 ...

  9. TypeScript Modules(模块)

    本文概述了TypeScript中如何使用模块以各种方式来组织代码.我们将涵括内部和外部的模块,并且讨论他们在适合在何时使用和怎么使用.我们也会学习一些如何使用外部模块的高级技巧,并且解决一些当我们使用 ...

随机推荐

  1. Fiddler使用资料-整理

    以下是一个博主写的一个系列. 随笔分类 - Fiddler   10.Fiddler中设置断点修改Response 摘要:当然Fiddler中也能修改Response 第一种:打开Fiddler 点击 ...

  2. 非正常卸载Chrome浏览器导致无法重新安装

    昨晚在使用selenium的时候,Chrome浏览器和Chromedriver.exe不兼容,前几天使用的时候都没问题,查看浏览器版本后发现浏览器已经自动升级为67版本(我之前安装的是61版本). 于 ...

  3. idea的基础设置

    1.    在idea.exe.vmoptions文件里,如图进行修改即可,, 优化的原理就是调用更多的运行内存来加载他,所以4G的话本身会不够,就会造成其他应用很卡. 2. 下面是进行一些基本的配置 ...

  4. gradle 构建scala程序

    一.build.gradle 二.gradle build ===================== 执行scala scala main.scala

  5. 织梦xss通杀所有版本漏洞【学习笔记】

    漏洞原因:DEDECMS由于编辑器过滤不严,将导致恶意脚本运行.可getshell取得权限.为什么说它是0Day呢?能getshell的都算0Day(鸡肋发挥起来也能变凤凰)目前只是测试过5.3到5. ...

  6. 三大框架整合模板ssh

    1.web.xml配置 <!-- 让spring随web启动而创建的监听器 --> <listener> <listener-class>org.springfra ...

  7. vue 中数据共享的方式

    1.父子组件的数据传递2.store模式 - 局部的数据共享3.vuex 中共享 state - 全局的数据共享

  8. 「TJOI2018」str

    碱基序列 题目描述 小豆参加了生物实验室.在实验室里,他主要研究蛋白质.他现在研究的蛋白质是由$k$个氨基酸按一定顺序构成的.每一个氨基酸都可能有$a$种碱基序列$s_{i,j}$构成. 现在小豆有一 ...

  9. MarkDowm——语法篇

    前言 文档地址: http://www.markdown.cn/ 为了自己更熟悉MarkDown的语法,做个练习吧,以后博文打算用MarkDown直接写了. 标题 Markdown 支持两种标题的语法 ...

  10. PHP高手干货分享:不能不看的50个细节!

    1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手 ...