TypeScript--模块,以及模块化封装DB库

游览器无法解析模块,如要运行代码,需要命令行进入当前项目:输入node index.js方可运行代码。

模块的概念

模块的的概念(官方):

     关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。
     “外部模块”现在则简称为“模块” 模块在其自身的作用域里执行,而不是在全局作用域里;
     这意味着定义在一个模块里的变量,函数,类等等在模块外部是不可见的,除非你明确地使用export形式之一导出它们。 
     相反,如果想使用其它模块导出的变量,函数,类,接口等的时候,你必须要导入它们,可以使用 import形式之一。

模块的概念(自己理解):

    我们可以把一些公共的功能单独抽离成一个文件作为一个模块。
    模块里面的变量 函数 类等默认是私有的,如果我们要在外部访问模块里面的数据(变量、函数、类),
    我们需要通过export暴露模块里面的数据(变量、函数、类...)。
    暴露后我们通过 import 引入模块就可以使用模块里面暴露的数据(变量、函数、类...)。

export导出:

1. 首先新建一个moudles文件夹
在这里插入图片描述

2. 往里面新建一个db.ts文件,往里面写入

  • 暴露方法01:
export var dbUrl = "xxxxxx";

export function getData01(): any[] {
    
    
  console.log("获取数据库的数据111");
  return [1, 1, 1];
}

export function save(): void {
    
    
  console.log("保存数据成功");
}
  • 暴露方法02:
var dbUrl = "xxxxxx";

function getData(): any[] {
    
    
  console.log("获取数据库的数据111");
  return [1, 1, 1];
}

function save(): void {
    
    
  console.log("保存数据成功");
}
export {
    
     dbUrl, getData, save };

3. 在外部的index.ts引入模块

  • 不起别名
import {
    
     getData, save, dbUrl } from "./moudles/db";
getData();
save();
console.log(dbUrl);
  • 起别名(as关键字)
import {
    
     getData as g, save as s, dbUrl as d } from "./moudles/db";
g();
s();
console.log(d);

export default 默认导出

export default    默认导出(不可以导出变量)
每个模块都可以有一个default导出。 默认导出使用 default关键字标记;
并且一个模块只能够有一个default导出。
需要使用一种特殊的导入形式来导入 default导出。
不可以起别,不可以加{}

示例:

db.ts

var dbUrl = "xxxxxx";

export default function getData(): any[] {
    
    
  console.log("获取数据库的数据111");
  return [1, 1, 1];
}

function save(): void {
    
    
  console.log("保存数据成功");
}

index.ts

import getData from "./moudles/db";
getData();

模块化封装DB库

  1. 创建一个moudles文件,往里面创建db.ts文件,往里面写入:
    在这里插入图片描述

db.ts

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 {
    
    
    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[] {
    
    
    throw new Error("Method not implemented.");
  }
}

//定义一个操作mssql数据库的类
class MsSqlDb<T> implements DBI<T> {
    
    
  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[] {
    
    
    throw new Error("Method not implemented.");
  }
}

export {
    
     MysqlDb, MsSqlDb };
  1. 创建model文件夹,创建user.ts,往里面写入:
    在这里插入图片描述
import {
    
     MsSqlDb } from "../moudles/db";

//定义数据库的映射
class UserClass {
    
    
  username: string | undefined;
  password: string | undefined;
}

var UserModel = new MsSqlDb<UserClass>();
export {
    
     UserClass, UserModel };
  1. 在最外面的index.ts写入:
    在这里插入图片描述
import {
    
     UserClass, UserModel } from "./model/user";

//  创建数据
var user = new UserClass();
user.username = "张三";
user.password = "12345655654757";
// 添加数据
UserModel.add(user);
// 获取数据
UserModel.get(12345655654757);

猜你喜欢

转载自blog.csdn.net/I_r_o_n_M_a_n/article/details/114776954