范型

typescriptjavascript基础上扩充了类型,并且可以进行静态类型检查。它在某种成都上限制javascript的灵活性,但是这种限制是必要的,在类型体系内提供灵活性,才是可控的。范型在类型系统的体系内,给程序提供了灵活性,避免去写除了类型不同其他都相同的代码.范型可以代表任意的类型,这个范围太大了,有时侯我们希望缩小它代表的范围,还可以对它添加约束

适用范围

  • 函数
  • 接口
  • 别名

范型函数

function identity(arg: number): number {return arg;
}
function identity(arg: any): any {return arg;
}// 适用范型
function identity<T>(arg: T): T {return arg;
}const identify =<T>(arg:T):T =>{ return arg};复制代码

形式上在函数括号前加上<T>

范型接口


interface GenericIdentityFn<T> {(arg: T): T;
}
复制代码

形式上 接口名后面加上<T>

范型类


class GenericNumber<T> {zeroValue: T;add: (x: T, y: T) => T;
}复制代码

形式上 在类名后面加上<T>

别名

    type Container<T> = { value: T };
复制代码

约束

形式上<T extend B>B可以是接口或类

转载于:https://juejin.im/post/5c4026f3f265da6115110b07

Typescript之 范型相关推荐

  1. TypeScript中的范型

    一.定义 比如我们有一个函数,如果不使用范型是这样的 function getData(arg: number): number {return arg; } 复制代码 它只能传入number类型,如 ...

  2. java数组的协变_Java数组协变与范型不变性

    变性是OOP语言不变的大坑,Java的数组协变就是其中的一口老坑.因为最近踩到了,便做一个记录.顺便也提一下范型的变性. 解释数组协变之前,先明确三个相关的概念,协变.不变和逆变. 一.协变.不变.逆 ...

  3. Generic Data Access Objects -范型DAO类设计模式

    Generic Data Access Objects 普通数据访问对象,这个是Hibernate官方网站上面的一个DAO类的设计模式,基于JDK5.0范型支持,文章地址如下: http://www. ...

  4. 使用范型观察者模式观察多个数据的实现

    观察者模式是最灵活.最多变的一种模式.在现实开发中,我常常会遇到观察者很多而且观察的数据也各不相同的情况,如果采用经典的观察者实现方法,在观察者的Update方法中难免要传递Subject中自己并不关 ...

  5. ?通配符 以及扩展通配符在范型中的应用。。。。。。。。。。。。。。。。。。...

    一.通配符 ?标识的范型化对象,可以标识任意类型的范型化   ,可以将任意类型化的值赋值给 ?通配符所规范化的类.  可以将任意类型的范型化类型  赋值给?通配符范型化的类型 . Collection ...

  6. Java 数组转型和范型

    今天写代码遇到一个奇怪的问题,代码结构如下: [java] view plaincopy print? ArrayList<String> list = new ArrayList< ...

  7. “主要的编程范型”及其语言特性关系(多图)

    "主要的编程范型"(The principal programming paradigms)这幅图,其实出现得不算早,作者在2007年完成了该图的1.0版,到2008年更新至v1. ...

  8. C++ Primer 第十六章 模板与范型编程

    16.1 模板定义     模板和c#范型一样,建立一个通用的类或函数,其参数类型和返回类型不具体指定,用一个虚拟的类型来代表,通过模板化函数或类实现代码在的重用.     定义语法是:    tem ...

  9. 分析 C# 2.0 新特性 -- 范型(Generics)

    分析 C# 2.0 新特性 -- 范型(Generics) 作者:梁振[MS-MVP]   范型是提高面向对象程序多态性设计衍生的. 1,C# 多态性设计回顾和展望 在引入范型这个概念之前,回顾一下1 ...

最新文章

  1. 使用可信证书为windows RDP服务提供加密
  2. 以下不是python文件读写方法的是-python 文件读写 - 刘江的python教程
  3. Win10无法修改编辑hosts文件
  4. C语言关键字--volatile(不稳定的,反复无常的)
  5. android miui9.0改装条例,安卓的通知适配(更新至9.0)
  6. 见证中国技术成长 数据技术嘉年华的别样十年
  7. Linux/Documentations: Kernel Livepatching
  8. 杀毒jwgkvsq.vmx
  9. c语言调试的意义,C语言的调试
  10. Epub,Mobi,Azw3电子书格式的区别,有什么好用的epub阅读器
  11. 噇字符集linux增加,『转』Unicode汉字编码表
  12. 10个提升写作手法的方法
  13. ES与分布式系统(一)
  14. 笔记本电脑黑屏后如何重装系统,解决笔记本电脑黑屏
  15. 赛格威机器人待遇_赛格威机器人:泊车助理只是应用之一,开发者计划让机器人有无限可能...
  16. hive sql—开窗函数—累积求和和滑动求和
  17. 护照港澳通回乡证多功能证件识别阅读器MEPR100接口函数的定义
  18. CISP证书 +转来文章:漫谈信息安全认证(CISP与CISSP)
  19. easyuefi如何添加引导_easyuefi怎么用?easyuefi基本使用方法介绍
  20. C#语言实例源码系列-仿360安全卫士界面

热门文章

  1. AI与区块链的融合会给人类带来什么?
  2. 程序员转型AI,这里有最全的机器学习介绍+应用实例
  3. Docker 部署SpringBoot项目不香吗?
  4. 总结:一些关于 CPU 的基本知识
  5. 一份来自贾扬清的AI修炼指南:不存在算法工程师,调参侠没有市场
  6. 机器学习拓展知识(数学/统计/算法)
  7. 那些承包欧美学生论文的肯尼亚人:平台抽成一半,学生工日薪200
  8. 《动手学深度学习》中文第二版预览版发布
  9. 腾讯曝光新型AI攻击手法:“黑”掉神经网络,构造后门,最主流模型均不能幸免...
  10. 神童、数学家、抑郁症患者,控制论之父诺伯特·维纳的一生