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

东莞做网站哪里好泰安网络推广 网站建设 网站优化

东莞做网站哪里好,泰安网络推广 网站建设 网站优化,厂家招商,ui设计培训机构有用吗TypeScript中的泛型#xff09; 一、泛型的定义二、泛型函数三、泛型类#xff1a;比如有个最小堆算法#xff0c;需要同时支持返回数字和字符串两种类型。通过类的泛型来实现四、泛型接口五、泛型类 --扩展 把类作为参数类型的泛型类1、实现#xff1a;定义一个 User 的类… TypeScript中的泛型 一、泛型的定义二、泛型函数三、泛型类比如有个最小堆算法需要同时支持返回数字和字符串两种类型。通过类的泛型来实现四、泛型接口五、泛型类 --扩展 把类作为参数类型的泛型类1、实现定义一个 User 的类这个类的作用就是映射数据库字段然后定义一个 MysqlDb 的类这个类用于操作数据库然后把 User 类作为参数传入到 MysqlDb 中 一、泛型的定义 **泛型**软件工程中我们不仅要创建一致的定义良好的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 类型, any 可以解决这个问题,但是相当于放弃了类型检查. function getData3(value: any):any {return value }需求 传入什么就返回什么类型。 any 实现的时候传入和返回可以不一样的类型此时我们可以使用泛型来解决。any 的性能比泛型差 function getDataT(value:T):T {return value }// console.log(getDatanumber(13)) // 错误写法 console.log(getDatanumber(123)) // 正确写法 console.log(getDatastring(123)) // 正确写法三、泛型类比如有个最小堆算法需要同时支持返回数字和字符串两种类型。通过类的泛型来实现 只能传入数字类型 class MinClass {list:number[] [];add(num: number) {this.list.push(num)}min():number {let minNum this.list[0]this.list.forEach(el{if(elminNum) {minNum el}})console.log(minNum)return minNum} } var m new MinClass() m.add(2) m.add(28) m.add(-2) m.add(22) m.add(92) console.log(m.min())类的泛型传入和返回的一致 class MinClassT {list:T[] [];add(num: T):void {this.list.push(num)}min():T {let minNum this.list[0]this.list.forEach(el{if(elminNum) {minNum el}})console.log(minNum)return minNum} }var m new MinClassnumber() // 实例化类并且指定了类的 T 代表的类型是number m.add(2) m.add(28) m.add(-2) m.add(92) console.log(m.min())泛型的好处 首先是有类型校验其次是能够实现传入什么返回什么。 四、泛型接口 // 函数类型接口 interface ConfigFn{(value: string, value2:string):string } var setData:ConfigFn function(val:string, val2:string):string {return valval2 } setData(name, lisi)第一种定义泛型接口 interface ConfigFn{T(value: T):T } var setData:ConfigFn functionT(val:T):T {return val } setDatastring(name) setDatanumber(12334) 第二种定义泛型接口 interface ConfigFnT{(value: T):T } function setDataT(val:T):T {return val } var mySetData:ConfigFnstring setData;mySetData(name) // 正确写法 mySetData(12334) // 错误写法五、泛型类 --扩展 把类作为参数类型的泛型类 泛型类泛型可以帮助我们避免重复的代码以及对不特定数据类型的支持类型校验下面我们看看把类当作参数的泛型类 1、定义个类 2、把类作为参数来约束数据传入的类型 1、实现定义一个 User 的类这个类的作用就是映射数据库字段然后定义一个 MysqlDb 的类这个类用于操作数据库然后把 User 类作为参数传入到 MysqlDb 中 var user new User({username: zhangsan,password: a123456 }) var Db new MysqlDb() Db.add(user)// 把类作为参数来约束 class User{username: string|undefined;passwrod: string|undefined }class MysqlDb{list:User[] []add(user: User):boolean{this.list.push(user)return true}}let u new User() u.username lis u.passwrod 123456let Db new MysqlDb() Db.add(u)动态的校验 MysqlDb 类 // 操作数据库的泛型类 class MysqlDbT{list:T[] []add(user: T):boolean{this.list.push(user)return true} } // 1、定义一个 User 类 和数据库进行映射 class User{username: string|undefined;passwrod: string|undefined }let u new User() u.username lisisi u.passwrod 123456//let Db new MysqlDb()// 这种方法是有问题的能够传入任意的类型没有做校验 let Db new MysqlDbUser() // 这种方法可以正常校验 Db.add(u)class ArticelCate{title: string|undefined;desc: string|undefined;status: number | undefinedconstructor(params:{title: string|undefined,desc: string|undefined,status: number | undefined}) {this.title params.titlethis.desc params.descthis.status params.status} } let article new ArticelCate({title: 今日新闻, desc: 1233,status: 1 }) let Db2 new MysqlDbArticelCate() Db.add(article)
http://www.hkea.cn/news/14471206/

相关文章:

  • 视频网站的做如何开通一个微商城
  • 深圳龙华做网站广州app开发公司排名
  • 网站建设如何控标比较好的前端网站
  • 网站优化的代码常平镇网站仿做
  • 海南招聘网苏州推广关键词优化
  • 泰安肥城网站建设网站安全建设方案例文
  • 益阳网站建设益阳网络公司名字
  • 国内做轮胎网站延吉网站建设depawo
  • 西城企业网站建设徐州人才网最新徐州招聘信息
  • 中国建设信息港网站wordpress 删除 角色
  • 国内免费商用图片的网站wordpress官方手机客户端
  • 苏州化妆品网站建设wordpress do_action 返回值
  • 昆明有网站的公司网站建设的一般费用
  • 网页设计网站源代码wordpress网站语言
  • 威海精神文明建设办公室网站文字一键生成图片
  • 网页开发和网站开发新产品推广方案策划
  • 网站正在建设中的英文佛山微网站推广
  • 做购物网站 国外服务器微信公众号文章怎么制作
  • 电子商务网站建设基础步骤网站开发周期价格
  • 网站建设带主机wordpress的商城网站制作公司
  • 网站要实现的电商功能维护网站建设
  • 莱芜益寿堂网站金湖建设工程质量监督网站
  • 佛山品牌网站建设报价wordpress插件恢复图片
  • 菏泽手机网站建设百度网盘网站开发文档模板
  • 厦门企业网站seo霸屏网站开发
  • 网站模糊设计深圳网站设计工作室
  • 建设银行观澜支行网站天津建设监理协会网站
  • 怎么做网站步骤免费的广告学
  • 佛山网站推广建设做网站用小图标在什么网下载
  • 怎样做百度网站辽阳网站网站建设