- 定义一个User的类这个类的作用就是映射数据库字段
- 然后定义一个 MysqlDb的类这个类用于操作数据库
- 然后把User类作为参数传入到MysqlDb中
```typescript
// 1.把类作为参数来约束数据传入的类型
class User {
username: string | undefined;
pasword: string | undefined;
}
class MysqlDb {
add(user: User): boolean {
} } var u = new User(); u.username = ‘张三’; u.pasword = ‘123456’; var Db = new MysqlDb(); Db.add(u);console.log(user);return true;
// 第二个方法 class ArticleCate { title: string | undefined; desc: string | undefined; status: number | undefined } class MysqlDb { add(info: ArticleCate): boolean { console.log(info); console.log(info.title); return true; } } var a = new ArticleCate(); a.title = “国内”; a.desc = “国内新闻”; a.status = 1; var Db = new MysqlDb(); Db.add(a);
// 问题:代码重复
<a name="b900f1dc"></a>##### 1、使用泛型解决代码重复的问题```typescript// 1.定义操作数据库的泛型类class MysqlDb<T>{add(info: T): boolean {console.log(info);return true;}updated(info: T, id: number): boolean {console.log(info);console.log(id);return true;}}// 2.想给User表增加数据,定义一个User类 和数据库进行映射class User {username: string | undefined;pasword: string | undefined;}var u = new User();u.username = '张三';u.pasword = '123456';var Db = new MysqlDb<User>();Db.add(u);// 3.相关ArticleCate增加数据 定义一个ArticleCate类 和数据库进行映射class ArticleCate {title: string | undefined;desc: string | undefined;status: number | undefined;constructor(params: {title: string | undefined,desc: string | undefined,status?: number | undefined}) {this.title = params.title;this.desc = params.desc;this.status = params.status;}}// 增加操作var a = new ArticleCate({title: '分类',desc: '1111',status: 1});// 类当做参数的泛型类var Db = new MysqlDb<ArticleCate>();Db.add(a);// 修改数据var a = new ArticleCate({title: '分类111',desc: '2222'});a.status = 0;var Db = new MysqlDb<ArticleCate>();Db.updated(a, 12);
