Typescript学习之路—练习

功能:定义一个操作数据库的库,支持 Mysql、Mssql、MongDB
要求1:Mysql、Mssql、MongDB 功能一样,都有 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>{
  constructor(){
    console.log('数据库建立连接');
  }
  add(info: T): boolean{
    console.log('add')
    console.log(info);
    return true
  }

  update(info: T, id: number): boolean{
    console.log('update')
    console.log(info);
    return true
  }

  delete(id: number): boolean{
    // throw new Error('方法未实现')
    console.log('方法未实现');
    return true
  }

  get(id: number): any[]{
    let list = [
      {
        title: 'xxx',
        desc: 'xx',
      },
      {
        title: 'xxx',
        desc: 'xx',
      },
    ]
    return list;
  }
}

//已操作类
class Mssql<T> implements DBI<T>{
  add(info: T): boolean{
    console.log('add2')
    console.log(info);
    return true
  }

  update(info: T, id: number): boolean{
    throw new Error('方法未实现')
  }

  delete(id: number): boolean{
    throw new Error('方法未实现')
  }
  get(id: number): any[]{
    throw new Error('方法未实现')
  }
}

//操作用户表
class User {
  username: string | undefined;
  password: string | undefined;
}

let u = new User();
u.username = '张三';
u.password = '123456';

let p = new User();
p.username = "李四";
p.password = '789456';

let oMysql = new MysqlDB<User>();
oMysql.add(u);
oMysql.update(p,1);
oMysql.delete(1);
let oMssql = new Mssql<User>();
oMssql.add(u);

let data = oMysql.get(1);
console.log(data)

get方法部分还没有搞清楚;

按钮点击

class Greeter<T>{
  greeting: T;
  constructor(message: T){
    this.greeting = message
  }
  greet() {
    return this.greeting;
  }
}

let greet = new Greeter<string>('Hello  world');
let button = document.createElement('button');
button.textContent = 'say';
button.onclick = function(){
  alert(greet.greet());
}
document.body.appendChild(button)

参考:
Typescript中文手册: https://typescript.bootcss.com/
TypeScript 基础入门及综合案例使用:https://www.jianshu.com/p/d86a8698cb75

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值