当前位置: 首页 > news >正文

网站交互性无备案网站 阿里联盟

网站交互性,无备案网站 阿里联盟,内蒙古知名网站建设,微商城手机网站设计公司一、泛型的定义 在软件开发中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能支持当前数据类型,同时也能支持未来的数据类型,这在创建大型系统时提供了十分灵活的功能。 在像 C# 和 Java 这样的语言中&…

一、泛型的定义

在软件开发中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。

组件不仅能支持当前数据类型,同时也能支持未来的数据类型,这在创建大型系统时提供了十分灵活的功能。

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

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

二、泛型的函数

// 只能返回 string类型的数据
function getData(value: string): string {return value
}// 同时返回 string类型 和 number类型,但是代码冗余
function getData1(value: string): string {return value
}function getData2(value: number): number {return value
}// 可以同时返回 string类型 和 number类型,但是放弃了类型检查
function getData3(value: any): any {return value
}

由上可看出,any类型 传入的参数类型和返回的参数类型可以不一致。

想要实现:传入什么,返回什么。比如:传入 number类型 必须返回 number类型,传入 string类型 必须返回 string类型,就需要用的泛型。

泛型:可以支持不特定的数据类型,要求传人的参数和返回的参数一致。

// 泛型定义,T表示泛型,具体什么类型是调用这个方法的时候决定的
function getData<T>(value: T): T {return value
}// getData<number>('string') // 错误的写法
getData<number>(123) // 传入的参数必须为number类型
getData<string>('str') // 传入的参数必须为string类型// 泛型定义(了解): 指定调用时的参数类型,返回参数为任意类型
function getData1<T>(value: T): any {return '123456'
}getData1<number>(123)

三、泛型类

最小堆算法,需要同时支持返回数字和字符串a - z两种类型,通过类的泛型来实现。

只支持 number类型

class MinClass {public list: number[] = [] // 定义类中公共属性listadd (num: number): void { // 向list中追加数据this.list.push(num)}min(): number { // 求list数组中最小的数let minNum: number = this.list[0]for (let i: number = 0; i < this.list.length; i++) {if (minNum > this.list[i]) {minNum = this.list[i]}}return minNum}
}let m = new MinClass()
m.add(3)
m.add(4)
m.add(10)
m.add(8)
console.log(m.min()) // 3

使用类的泛型实现

class MinClass<T> {public list: T[] = []add(value: T): void {this.list.push(value)}min(): T { // 求list数组中最小的数let minNum: T = this.list[0]for (let i: number = 0; i < this.list.length; i++) {if (minNum > this.list[i]) {minNum = this.list[i]}}return minNum}
}/* 实例化类,并且指定了类的T代表的类型是number */
let m1 = new MinClass<number>()
m1.add(5)
m1.add(4)
m1.add(10)
console.log(m1.min()) // 4/* 实例化类,并且指定了类的T代表的类型是string */
let m2 = new MinClass<string>()
m2.add('z')
m2.add('c')
m2.add('e')
console.log(m2.min()) // c

四、泛型接口

// 定义函数类型接口
interface ConfigFn {(value1: string, value2: string): string
}// 函数类型接口使用
const setData: ConfigFn = (value1: string, value2: string): string => {return value1 + value2
}console.log(setData('name', '张三')) // name张三

泛型接口:接口类型在调用方法时动态传入

interface ConfigFn {<T>(value: T): T
}const getData: ConfigFn = <T>(value: T): T => {return value
}getData<string>('指定为string类型,传入类型必须为string类型')
getData<string>(123) // 错误写法
interface ConfigFn<T> {(value: T): T
}function getData<T> (value: T): T {return value
}const myGetDate: ConfigFn<string> = getDatamyGetDate('20')
http://www.yayakq.cn/news/143281/

相关文章:

  • 建个人网站怎么赚钱新媒体营销策略都有哪些
  • 九度互联网站制作效果购买域名后 可以做网站么
  • 淘宝客没网站怎么做网站开发对企业的关键
  • 如何看网站是谁做的媒体代发网站
  • 大华建设项目管理有限公司网站wordpress s7
  • 网站开发需要的技术人才php网站怎么做seo
  • 网站建设四川菏泽网站网站建设
  • 做英文网站有用吗网站怎么排版
  • wordpress上传小视频杭seo网站建设排名
  • 织梦手机网站怎么安装教程视频教程盘锦网站建设价位
  • 做vr效果图的网站注册网站免费注册
  • 微网站如何做微信支付宝支付宝企业网站建设建议
  • 企业网站建设在网络营销中的地位与作用wordpress 5.0编辑器很难用
  • 网站建设 代码下载成立公司合作协议书范本
  • 做网批有专门的网站吗?网店商品页面制作加工
  • 网站建设怎么搭建服务器wordpress文章加密访问
  • 制作企业网站一般多少钱做网站正规公司
  • 设计用哪些网站教育课程网站建设
  • 网站建设还流行吗网站建设先进个人代表发言
  • 上海做网站的小公司有哪些.net 接单网站
  • phpmysql网站开发全程实例seo网站优化方案书
  • 网站服务器最新注册网址查询
  • 用dw做的网站怎么放到网上建境模型公司官网
  • 遵义市网站建设公司详情页设计
  • 网站建设设计时代创信好做网站要几天
  • 旅游网站建设方案后台seo网站关键词排名快速
  • 安阳网站wordpress 不允许评论
  • 汉中网站建设公司seo关键词快速排名前三位
  • p2p理财网站建设房产网站建设的功能
  • 郑州市公司网站开发设计古镇网站建设