/*

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. 浅谈OpenStack与虚拟机的区别与联系

    很多不太明白OpenStack与虚拟机之间的区别,下面以KVM为例,给大家讲一下他们的区别和联系 OpenStack:开源管理项目OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项 ...

  2. Vuex状态管理总结

    一.什么是 Vuex 1.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 2.Vuex 采用集中式存储和管理应用中所有组件的状态 3.Vuex 应用的核心是 store(仓库)-- 包 ...

  3. 深度学习环境搭建(CUDA9.0 + cudnn-9.0-linux-x64-v7 + tensorflow_gpu-1.8.0 + keras)

    关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人员,并且实验室或者个人资金充沛,建议您采用如下配置: 主板:X299型号或Z270型号 CPU: i7-6950X或i7-7700K ...

  4. P1801 黑匣子[堆]

    题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...

  5. Python正则提取数据单引号内数据,并判断是否是空列表(是否提取到数据)

    #coding=utf- import re string1="asdfgh'355'dfsfas" string2="fafafasfasdfasdf" pa ...

  6. 题解 UVa10780

    题目大意 多组数据,每组数据给定两个整数 \(m,n\),输出使 \(n\%m^k=0\) 的最大的 \(k\).如果 \(k=0\) 则输出Impossible to divide. 分析 计数水题 ...

  7. python内建函数和工厂函数的整理

    内建函数参阅: https://www.cnblogs.com/pyyu/p/6702896.html 工厂函数: 本篇博文比较粗糙,后续会深入整理

  8. OAuth 2.0攻击

    参考文章:https://www.yuque.com/pmiaowu/web_security_1/oauth 作者:PHPoop 关于OAuth2.0协议的授权流程可以参考下面的流程图: 1.Cli ...

  9. jquery操作按钮修改对应input属性

    点击右侧的修改按钮,对应的input中的disabled和readonly得属性修改 $(".buttonxg button").click(function(){ $(this) ...

  10. JQuery购物车多物品数量的加减+总价计算

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...