/*

TypeScript泛型类 - 把类作为参数类型的泛型类

*/

/*

泛类:泛型可以帮助我们避免重复的代码以及对不特定数据类型的支持(类型校验),下面我们看看把类当做参数的泛型类

1、定义个类
2、把类作为参数来约束数据传入的类型 */ //比如有个最小堆算法 普通类型 // class MinClass{
// public list:number[]=[];
// add(num:number){
// this.list.push(num)
// }
// min():number{
// var minNum=this.list[0];
// for(var i=0;i<this.list.length;i++){
// if(minNum>this.list[i]){
// minNum=this.list[i];
// }
// }
// return minNum;
// } // }
// var m1=new MinClass();
// m1.add(11);
// m1.add(3);
// m1.add(2);
// alert(m1.min()) //类的泛型
// class MinClas<T>{
// public list:T[]=[];
// add(value:T):void{
// this.list.push(value);
// }
// min():T{
// var minNum=this.list[0];
// for(var i=0;i<this.list.length;i++){
// if(minNum>this.list[i]){
// minNum=this.list[i];
// }
// }
// return minNum;
// }
// } // var m1=new MinClas<number>(); //实例化类 并且指定了类的T代表的类型是number
// m1.add(11);
// m1.add(3);
// m1.add(2);
// alert(m1.min()) // var m2=new MinClas<string>(); //实例化类 并指定定了类的T代表的类型是string
// m2.add('c');
// m2.add('a');
// m2.add('v');
// alert(m2.min()) /*
定义一个User的类这个类的作用就是映射数据库字段
然后定义一个 MysqlDb的类这个类用于操作数据库
然后把User类作为参数传入到MysqlDb中 var user=new User({
username:'张三',
password:'123456'
}) var Db=new MysqlDb();
Db.add(user); */ //把类作为参数来约束数据传入的类型 // class User{
// username:string | undefined;
// pasword:string | undefined;
// } // class MysqlDb{
// add(user:User):boolean{ // console.log(user);
// 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); // 问题:代码重复 //定义操作数据库的泛型类
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;
}
} //想给User表增加数据 // 1、定义一个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); //2、相关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);

TypeScript泛型类 - 把类作为参数类型的泛型类的更多相关文章

  1. Java里的参数类型/返回值类型

    参数类型/返回值类型: ##数据类型: ###基本类型: ###引用类型: ####数组 ####类 ####接口 参数类型/返回值类型是类和接口的情况: 1.参数类型是普通类的情况 为什么写成静态, ...

  2. c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别

    一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...

  3. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  4. 关键字final 修饰类、方法、属性、参数类型

    笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.Sys ...

  5. typescript 参数类型

    1.参数类型:在参数名称后面使用冒号来指定参数的类型 var myname:string = 'wzn' => "use strict"; var myname = 'wzn ...

  6. TypeScript入门知识二(参数新特性)

    一,参数类型 1.在参数的名称后面使用冒号来指定参数的类型,当赋值的不是指定类型数值时会报错. var myname: string = "zhang san"; 2.当你没有指定 ...

  7. typescript接口的概念 以及属性类型接口

    /* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 2.第二步 任务 ...

  8. Typescript基础(3)——类

    前言 今天继续typescript的学习,开始ts类的学习. 类 类的实现 在ES6中新增了类的概念.我们先看ES6中类的实现. class Person { constructor(name,age ...

  9. Java泛型全解析【接口、类、封装类型】

    目录   1.导读  2.为何需要泛型?   3.泛型的定义格式   3.泛型的好处  4.什么时候使用泛型?   5.泛型的擦除   6.泛型的补偿  7.泛型的应用      7.1[泛型类]   ...

随机推荐

  1. commons-io之FileUtils、IOUtils

    原文:https://blog.csdn.net/justry_deng/article/details/93616705 commons-io简单说明:Common IO 是一个工具库,用来帮助开发 ...

  2. 用java刷剑指offer(数字在排序数组中出现的次数)

    题目描述 统计一个数字在排序数组中出现的次数. 牛客网链接 java代码 //看见有序就用二分法 public class Solution { public int GetNumberOfK(int ...

  3. Problem E: 数量的类模板

    #include<iostream> #include<iomanip> #include<algorithm> using namespace std; temp ...

  4. 数据分析常用shell命令

    目录 0.vim编辑器 1.awk命令(重要) 1.1 基本语法 1.2 基本用法 1.3 运算符 1.4 内建变量 1.5 其他 1.6 awk是一门变成语言,支持条件判断.数组.循环等功能.所以我 ...

  5. Oracle 数据库中的GROUP BY与HAVING

    一.GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列 ...

  6. faster-rcnn在ubuntu16.04环境下的超级详细的配置(转)

    首先,下载好必须要的安装包.为了方便,我已经全部上传在了百度云. - ubuntu16.04系统 链接:http://pan.baidu.com/s/1geU8piz 密码:25mk - cuda8. ...

  7. sql server vs mysql

    1.中文: my.ini [mysqld] character-set-server=utf8 character-set-client=utf8 data\testdb\db.opt default ...

  8. learning java StringBuilder 类

    StringBuilder s1 = new StringBuilder(); s1.append("panzidong"); s1.insert(,"hong,&quo ...

  9. [golang]golang 汇编

    https://lrita.github.io/2017/12/12/golang-asm/#why 在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于 ...

  10. KillTimer不能放在析构函数,可以放在DestroyWindow函数里

    转自 https://www.cnblogs.com/huking/archive/2009/11/27/1612201.html KillTimer&析构函数 析构函数中不能用KillTim ...