TypeScript泛型类 - 把类作为参数类型的泛型类
/* 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泛型类 - 把类作为参数类型的泛型类的更多相关文章
- Java里的参数类型/返回值类型
参数类型/返回值类型: ##数据类型: ###基本类型: ###引用类型: ####数组 ####类 ####接口 参数类型/返回值类型是类和接口的情况: 1.参数类型是普通类的情况 为什么写成静态, ...
- c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别
一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- 关键字final 修饰类、方法、属性、参数类型
笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.Sys ...
- typescript 参数类型
1.参数类型:在参数名称后面使用冒号来指定参数的类型 var myname:string = 'wzn' => "use strict"; var myname = 'wzn ...
- TypeScript入门知识二(参数新特性)
一,参数类型 1.在参数的名称后面使用冒号来指定参数的类型,当赋值的不是指定类型数值时会报错. var myname: string = "zhang san"; 2.当你没有指定 ...
- typescript接口的概念 以及属性类型接口
/* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 2.第二步 任务 ...
- Typescript基础(3)——类
前言 今天继续typescript的学习,开始ts类的学习. 类 类的实现 在ES6中新增了类的概念.我们先看ES6中类的实现. class Person { constructor(name,age ...
- Java泛型全解析【接口、类、封装类型】
目录 1.导读 2.为何需要泛型? 3.泛型的定义格式 3.泛型的好处 4.什么时候使用泛型? 5.泛型的擦除 6.泛型的补偿 7.泛型的应用 7.1[泛型类] ...
随机推荐
- One Class SVM 对于样本不均衡处理思路——拿出白样本建模,算出outlier,然后用黑去检验效果
One Class SVM 是指你的training data 只有一类positive (或者negative)的data, 而没有另外的一类.在这时,你需要learn的实际上你training d ...
- Kotlin属性揭秘与延迟初始化特性
在上一次https://www.cnblogs.com/webor2006/p/11210181.html学习了Kotlin的伴生对象,这次来学习属性相关的东东. 属性揭秘: 先声明一个属性: 没啥可 ...
- K8s中的多容器Pod和Pod内容器间通信
容器(Container)常被用来解决比如微服务的单个问题,但在实际场景中,问题的解决往往需要多容器方案.本文会讨论将多个容器整合进单个Kubernetes Pod 中,以及Pod中的容器之间是如何通 ...
- 浏览器缓存控制 以及 在url框中回车、F5 和 Ctrl + F5的区别
第一部分: 浏览器缓存如何控制? 做网站,不知道缓存是什么东西怎么能行! 如何实现HTTP缓存呢? 下面我们来一步一步的探寻实现机制把. 方案一: 无缓存 说明:浏览器向服务器请求资源m.pn ...
- Linux安装版本solr-5.3.0
准备材料:solr-5.3.0.tgz 下载路径:http://mirrors.hust.edu.cn/apache/lucene/solr/ 安装solr 1.解压solr [root@svn-se ...
- mui 点击长按复制文本
项目需要长按复制文本内容,由于也没仔细研究过 mui 所以就直接百度.看到了 花落乱了流年 这篇博客 我就把这个博客的代码融合到自己的项目里,实现了复制的需求 直接上代码 单独写到了一个 js 文件. ...
- Java编译器的优化
public class Notice { public static void main(String[] args) { // 右侧20是一个int类型,但没有超过左侧数值范围,就是正确的 // ...
- Kubernetes 学习14 kubernetes statefulset
一.概述 1.在应用程序中我们有两类,一种是有状态一种是无状态.此前一直演示的是deployment管理的应用,比如nginx或者我们自己定义的myapp它们都属于无状态应用. 2.而对于有状态应用, ...
- Kubernetes 学习10 Service资源
一.Service对应组件关系 1.在kubernetes平台之上,pod是有生命周期的,所以为了能够给对应的客户端提供一个固定的访问端点,因此我们在客户端和服务Pod之间添加一个固定的中间层,这个中 ...
- asp.net文件夹上传下载组件
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...