TypeScript 第六讲 ———— TypeScript 泛型

前言:

泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵话的功能。

在像c和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。这样 用户就可以以自己的数据类型来使用组件。

通俗理解,泛型就是解决类接口方法的复用性、以及对不特定数据类型的支持

下面这种就只能返回string类型的数据:

function getData(value:string):string{
  return value;
}

any放弃了类型检查,不管什么类型都可以

泛型

可以支持不特定的数据类型

要求:传入你的参数和返回的参数一致

T表示泛型,具体什么类型是调用这个方法的时候决定的

function getData<T>(value:T):T{
  return value;
}
getData<number>(123);

泛型类:

比如有个最小的算法,需要同时支持返回数字和字符串两种类型。通过类的泛型来实现

class  MinClass<T>{

  public list:T[] = [];

  add(num:T){

    this.list.pust(num);

  }

  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>();

var m2 = new MinClas<string>();

m1.add(1);

m1.add(3);

m2.add(a);

m2.add(f);

泛型接口

第一种

interface configFn{

  <T>(value1:T,value2:T):T;

}
var setData:configFn = function(value1:T,value2:string):T{

  return value1+value2;

}

setData<string>(‘name’,‘张三’);

第二种

interface configFn<T>{

  (value1:T,value2:T):T;

}
function getData<T>(value1:T,value2:string):T{

  return value1+value2;

}

var myGetData:configFn<string> = getData;

myGetData("20","23");

原文地址:https://www.cnblogs.com/mqflive81/p/11530829.html

时间: 2024-11-02 19:58:28

TypeScript 第六讲 ———— TypeScript 泛型的相关文章

转载:TypeScript 简介与《TypeScript 中文入门教程》

简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发. TypeScript扩展了 JavaScript 的句法,所以任何现有的JavaScript程序可以不加改变的在TypeScript下工作.TypeScript是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性. TypeScrip

TypeScript入门七:TypeScript的枚举

关于枚举 数字枚举 字符串枚举 异构枚举 计算的和常量成员 运行时的枚举与反向映射 常量枚举与外部枚举 一.关于枚举 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数. 在定义中可以看到这些关键词:有穷序列集.成员.类型对象.计数. 在这些关键字中可以了解到枚举是一组有穷数据的集合:这些数据或者类型对象被当成这个集合的成员:计数的话我的理解有两种:前面提到有序集那么就可以使用有序的数字对数据进行标识,而前面提到的有穷就说明这些数据量是可以被计算的. 根据这些定

UI第六讲.UISegmentControl的使用,UISliser的使用,UIImageView的使用,UIControl的作用

一.UISegmentedControl的使用(分段控件) UISegmentedControl是iOS中的分段控件. 每个segment都能被点击,相当于集成了若干个button.通常我们会点击不同的segment来切换不同的view. 示例图: 常用方法: 示例代码: 基本的UISegmentControl的用法,同时通过其addtarget/action方法实点击切换view背景色的效果 效果图:点击UISegmentControl的item,切换背景色 二.UISlider的使用(滑块控

第六讲 map

2.  map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 3.  map的功能 自动建立Key - value的对应.key 和 value可以是任意你需要的类型. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次. 快速插入Key - Value 记录. 快速删除记录 根据Key 修

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

(笔记)斯坦福机器学习第六讲--朴素贝叶斯

本讲内容 1. Naive Bayes(朴素贝叶斯) 2.Event models(朴素贝叶斯的事件模型) 3.Neural network (神经网络) 4.Support vector machines(支持向量机) 1.朴素贝叶斯 上讲中的垃圾邮件问题有几个需要注意的地方: (1)  一个单词只有出现和不出现两种可能,因此每个特征x只有两个取值 (2) 特征向量x的个数应该等于词典的长度,比如  将该算法一般化: (1) 让 可以取更多的值 此时  服从多项式分布,而不再是伯努利分布.一种

Stanford机器学习---第六讲. 怎样选择机器学习方法、系统

原文见http://blog.csdn.net/abcjennifer/article/details/7797502  添加了一些自己的注释和笔记 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Stand

机器学习基石第六讲:theory of generalization

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 机器学习基石第六讲继续讨论"学习是否可行的问题". Restriction of Break Point 继续前面的讨论,我们看mH(N)是否会有一个很小的增长速度.回顾前面的四种成长函数及其break point.我们知道k是一个成长函数的break point,那比k大的值全是break point. mH(N)是一个hypothesis在N个数据点上可以产生的dic

通达OA 培训课程第六讲课件 实际开发案例讲解(图文)

第六讲主要结合过去开发的一些实际典型应用案例来给大家进行一下通达的开发过程及开发成果,通过本课程的学习使学员能够更好的将前面学习的内容进行贯穿整合,从而真正掌握开发技能.