• 定义一个User的类这个类的作用就是映射数据库字段
    • 然后定义一个 MysqlDb的类这个类用于操作数据库
    • 然后把User类作为参数传入到MysqlDb中 ```typescript // 1.把类作为参数来约束数据传入的类型 class User { username: string | undefined; pasword: string | undefined; } class MysqlDb { add(user: User): boolean {
      1. console.log(user);
      2. return true;
      } } var u = new User(); u.username = ‘张三’; u.pasword = ‘123456’; var Db = new MysqlDb(); Db.add(u);

    // 第二个方法 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);

    // 问题:代码重复

    1. <a name="b900f1dc"></a>
    2. ##### 1、使用泛型解决代码重复的问题
    3. ```typescript
    4. // 1.定义操作数据库的泛型类
    5. class MysqlDb<T>{
    6. add(info: T): boolean {
    7. console.log(info);
    8. return true;
    9. }
    10. updated(info: T, id: number): boolean {
    11. console.log(info);
    12. console.log(id);
    13. return true;
    14. }
    15. }
    16. // 2.想给User表增加数据,定义一个User类 和数据库进行映射
    17. class User {
    18. username: string | undefined;
    19. pasword: string | undefined;
    20. }
    21. var u = new User();
    22. u.username = '张三';
    23. u.pasword = '123456';
    24. var Db = new MysqlDb<User>();
    25. Db.add(u);
    26. // 3.相关ArticleCate增加数据 定义一个ArticleCate类 和数据库进行映射
    27. class ArticleCate {
    28. title: string | undefined;
    29. desc: string | undefined;
    30. status: number | undefined;
    31. constructor(params: {
    32. title: string | undefined,
    33. desc: string | undefined,
    34. status?: number | undefined
    35. }) {
    36. this.title = params.title;
    37. this.desc = params.desc;
    38. this.status = params.status;
    39. }
    40. }
    41. // 增加操作
    42. var a = new ArticleCate({
    43. title: '分类',
    44. desc: '1111',
    45. status: 1
    46. });
    47. // 类当做参数的泛型类
    48. var Db = new MysqlDb<ArticleCate>();
    49. Db.add(a);
    50. // 修改数据
    51. var a = new ArticleCate({
    52. title: '分类111',
    53. desc: '2222'
    54. });
    55. a.status = 0;
    56. var Db = new MysqlDb<ArticleCate>();
    57. Db.updated(a, 12);