/*

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. Random类产生随机数

    Random 类作为JAVA中用于产生的随机数 ,new  Random(10)  :10是种子数. 注意:Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相 ...

  2. 洛谷 P1020导弹拦截题解

    洛谷链接:https://www.luogu.org/problem/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...

  3. java基础(6)---面向对象,类,包

    一.类 类对象内存:  成员变量和局部变量: 成员变量:类中定义的一些私有变量,表示对象的属性. 局部变量:局部变量是在方法体里创建的,在方法体外是访问不到这个变量的. public class te ...

  4. python3 推荐使用super调用base类方法

    from:https://python3-cookbook.readthedocs.io/zh_CN/latest/c08/p07_calling_method_on_parent_class.htm ...

  5. vue-(过滤器,钩子函数,路由)

    1.局部过滤器 在当前组件内部使用过滤器,修饰一些数据 //声明 filters:{ '过滤器的名字':function(val,a,b){ //a 就是alax ,val就是当前的数据 } } // ...

  6. TJOI2016 字符串

    字符串 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确回答这m个问题,才能打开箱子拿到礼物,升职 ...

  7. dp--01背包,完全背包,多重背包

    背包问题 以下代码 n是物品个数,m是背包容积 物品价值和重量int v[maxn],w[maxn]; 01背包 模板 for(int i = 0; i < n; i++) { for(int ...

  8. DVWA-弱会话ID

    本周学习内容: 1.学习web安全深度剖析: 2.学习安全视频: 3.学习乌云漏洞: 4.总结Web应用安全权威指南: 实验内容: 进行DVWA弱会话ID实验 实验步骤: Low 1.打开DVWA,进 ...

  9. 汇编语言DOSBox软件使用方法

    https://wenku.baidu.com/view/e63b8b46ccbff121dc368305.html

  10. 原创:从海量数据中查找出前k个最小或最大值的算法(java)

    现在有这么一道题目:要求从多个的数据中查找出前K个最小或最大值 分析:有多种方案可以实现.一.最容易想到的是先对数据快速排序,然后输出前k个数字.   二.先定义容量为k的数组,从源数据中取出前k个填 ...