范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

TypeScript,接口(Interfaces),对象数组和函数的类型

  接口(Interfaces)
  在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,具体如何行动需要由类(classes)去实现(implement)。
  对象的类型
  TypeScript 使用接口(Interfaces)来定义对象的类型。TypeScript中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述。
  数组的类型
  1、最简单的方法是使用「类型 + 方括号」来表示数组;2、使用数组泛型(Array Generic) Array 来表示数组;3、用接口(可索引接口)来描述数组,。
  函数的类型
  JavaScript中,有两种常见的定义函数的方式:函数声明(Function Declaration)和函数表达式(Function Expression)。
  1、函数声明(Function Declaration);2、函数表达式(Function Expression);3、用接口定义函数的形状;4、函数的可选参数;5、参数默认值;6、函数的剩余参数;7、函数的重载。代码案例
  1、案例1 interface User {     readonly id: number;  // 只读属性     name: string;     age: number;     address?: string; // ?可选属性     [propName: string]: any;  // 定义了任意属性取 string 类型的值 } let user: User = {     id: 10001,     name: "小奋斗",     age: 32 } // user.id=20001; // 无法分配到 "id" ,因为它是只读属性。 console.log("user=", user);  let user2: User = {     id: 10002,     name: "IT小奋斗",     age: 32,     address: "山西省太原市" } console.log("user2=", user2);  let user3: User = {     id: 10003,     name: "IT小奋斗",     age: 32,     mobile: "15303511234" } console.log("user3=", user3);  let user4: User = {     id: 10004,     name: "IT小奋斗",     age: 32,     mobile2: "15303511234" } console.log("user4=", user4);
  输出:user= { id: 10001, name: "小奋斗", age: 32 } user2= { id: 10002, name: "IT小奋斗", age: 32, address: "山西省太原市" } user3= { id: 10003, name: "IT小奋斗", age: 32, mobile: "15303511234" } user4= { id: 10004, name: "IT小奋斗", age: 32, mobile2: "15303511234" }
  2、案例2 // 「类型 + 方括号」表示法 let array1: number[] = [1, 1, 2, 3, 4]; console.log("array1=", array1); // 数组泛型(Array Generic) Array 来表示数组 let array2: Array = [1, 1, 2, 3, 4]; console.log("array2=", array2); // 用接口表示数组  interface NumberArray {     // 定义索引key为number类型,索引值为number类型     [index: number]: number; } let array3: NumberArray = [1, 1, 2, 3, 4]; console.log("array3=", array3);  function sum(params:number[]) {     let args: {         [index: number]: number;         length: number;         callee: Function;     } = arguments;     return args; } let array4:number[] = [1, 1, 2, 3, 4]; console.log("sum=", sum(array4));  // any类型 let list: any[] = ["小奋斗", 32, { website: "http://www.what21.com" }]; console.log(list);
  输出:array1= [ 1, 1, 2, 3, 4 ] array2= [ 1, 1, 2, 3, 4 ] array3= [ 1, 1, 2, 3, 4 ] sum= [Arguments] { "0": [ 1, 1, 2, 3, 4 ] } [ "小奋斗", 32, { website: "http://www.what21.com" } ]
  3、案例3 // 函数声明(Function Declaration) function mySum1(x: number, y: number): number {     return x + y; } console.log("mySum1=", mySum1(3, 5));  // 函数表达式(Function Expression) let mySum2 = function (x: number, y: number): number {     return x + y; }; console.log("mySum2=", mySum2(3, 5));  // 用接口定义函数的形状 interface SumFunc {     (x: number, y: number): number; } let mySum3: SumFunc = function (x: number, y: number) {     return x + y; } console.log("mySum3=", mySum3(3, 5)); let mySum4: SumFunc; mySum4 = function (x: number, y: number) {     return x + y; } console.log("mySum4=", mySum4(3, 5));  // 函数的可选参数 function buildName(firstName: string, lastName?: string) {     if (lastName) {         return firstName + "." + lastName;     } else {         return firstName;     } } let tomcat = buildName("Tom", "Cat"); console.log("tomcat=", tomcat); let tom = buildName("Tom"); console.log("tom=", tom);  // 参数默认值 function buildName2(firstName: string, lastName: string = "Cat") {     return firstName + " " + lastName; } let tomcat2 = buildName2("Tom", "Cat"); console.log("tomcat2=", tomcat2); let tom2 = buildName2("Tom"); console.log("tom2=", tom2);  // 函数的剩余参数,ES6 中,可以使用 ...rest 的方式获取函数中的剩余参数 function push(array: any[], ...items: any[]):number[] {     items.forEach(function(item) {         array.push(item);     });     return array; } let arr:any = []; push(arr, 1, 2, 3); console.log("arr=", arr);  // 重载允许一个函数接受不同数量或类型的参数时,作出不同的处理。 function reverse(x: number | string): number | string | void {     if (typeof x === "number") {         return Number(x.toString().split("").reverse().join(""));     } else if (typeof x === "string") {         return x.split("").reverse().join("");     } } let r1 = reverse(1); console.log("r1=", r1); let r2 = reverse("2"); console.log("r2=", r2);
  输出:mySum1= 8 mySum2= 8 mySum3= 8 mySum4= 8 tomcat= Tom.Cat tom= Tom tomcat2= Tom Cat tom2= Tom Cat arr= [ 1, 2, 3 ] r1= 1 r2= 2

如何减少微信小程序用户流失,提高留存率?小程序用完即走的特性吸引了不少的商家开发微信小程序,但其留存的问题却是一直让商家揪心。今天我带来几个提高用户留存的方法,帮助大家解决用户流失率高的问题。一,提高用户体验感有句话说得苏宁办明星直播夜跨六一,关晓彤带萌宠刘雨昕SOLO大王杜海涛涛妈郭京飞关晓彤黑豹乐队黄品棠JUMP贾冰贾乃亮李好李佳航李晟雷佳音刘美含刘雨昕孟庭苇彭昱畅齐秦秦牛正威Rita小雨桑水木年华苏宁电竞战队(ANGELBINHUANFEN商家如何玩转小程序分销功能,实现以客拉客最近总有得有店的商家问及小程序分销怎么玩?如何招募到更多分销员,如何让分销员更加积极的推广等问题,今天我就详细的跟大家分析一下。1,分销商品的选择商家在选择分销商品时,要从价格传播年轻人电子潮流聚集地,三星用8大展区轻松狙击用户芳心7月30日8月1日,以爱生活探未来为主题的UDE国际消费电子博览会如期举行,面向3。4亿新世代,打造全球首个toC的消费电子展。随着电子产业消费趋势的快速迭代性,后浪Z世代等年轻概水果商超小程序,提高获客能力,牢牢圈住五公里用户小程序上线至今已经两年多了,各行业的商家都纷纷借助小程序,为自己的生意寻找新的发展机会。今天我就来说一下,水果行业和小程序结合能擦出什么火花。水果行业商家目前面临的局面1,街边及社51Talk2021Q1财报单季度收入破6亿再创历史新高5月17日,51Talk(NYSECOE)发布2021年第一季度财务业绩报告,继实现连续五个季度盈利之后,51Talk再次实现盈利。财报显示,2021年第一季度公司实现营业收入6。触派定制触摸一体机,触摸桌提高博物馆图书馆科技交互体验随着科学技术的不断进步,人们在不断追求新科技产品的同时,也更加追求人与机器的交互体验。而触摸屏技术的不断发展和完善,加上市场强大需求的推动,具有强大人机交互体验功能的多媒体触摸一体2020Qualcomm中国企业责任报告正式发布以创新赋能社会发展2021年5月21日,在2021高通技术与合作峰会上,高通公司发布2020Qualcomm中国企业责任报告。这是高通连续第6年发布中国区企业责任报告。此次报告详述了高通公司在202华为发布鸿蒙智联FTTR千兆全光房间新方案开启数字家庭新时代9月27日,FTTR全光房间高峰论坛暨F5G华为星光新品发布会在北京成功举行。来自住建部信通院运营商房地产商家装公司装饰协会及华为等行业各方代表,共话FTTR产业蓝图分享商业成功实ThinkBook发布多款家族重磅新品,联手王源打造新青年创业第一本6月1日,ThinkBook夏季新品发布会在北京正式举办。联想ThinkBook首席产品官周秋昊联想ThinkBook首席市场官周宝瑄ThinkBook代言人王源在现场共同探讨新前商家如何开发微信小程序?哪个小程序开发工具好?微信小程序问世以来,各行业的商家都开始开发自己的小程序,或准备开发自己的小程序,来利用小程序增加了自己的营收,那么今天我就来说一下,商家该如何开发微信小程序,哪个小程序开发工具比较
阿里女员工一案,律师说可能疑罪从无阿里女员工控告被客户猥亵被主管强奸一案,警方正在紧锣密鼓调查。值得一说的是,字节跳动,也就是今日头条所在公司,差点当了冤大头。被指强奸的王成文,竟到字节面试去了,还经过了初筛。不得5G下行MIMO框架本文是三星公司针对NR下行MIMO框架设计制定的原则,设计原则是根据Rel14eFDMIMO中可用的特性进行构建,包括1。精简a。取消与LTE向后兼容性特别相关的设计限制,比如每个二代共享电动车上路,除了车子本身的问题,还存在这些问题如今第一代共享电动车已经渐渐退出市场,很多城市都出现了二代共享电动车的身影。大家发现,二代车在性能方面除了减震需要调整,其他方面基本上都很不错了。其实,二代共享电动车还是存在一些需晚报亚朵再回应阿里女员工事件南航去年旅客运输量全球第二顾刚海航破产重整有路径,管理重整最难据微信公众号航旅速报消息,海南省海航联合工作组组长海航党委书记顾刚给海航所有员工写了一封信。内容与今天海航所有空乘收到的一封转发邮件有关。在邮件矿潮逐渐退去,昂达甜点级显卡RTX3060神盾驾到聊起昂达,相信多数玩家都会对这家综合性极强的厂商有印象,无论是早期的随身播放器(MP3MP4)和平板电脑,还是不忘初心一直在布局的PC配件,昂达出品向来以极高的性价比广受年轻消费者WearOS智能手表即将迎来GooglePay和Messages更新今日可穿戴设备新闻的头条,毫无疑问被三星新推出的搭载WearOS3软件的GalaxyWatch4系智能手表所占据。与此同时,谷歌也想让大家知道它并没有放弃现有的WearOS2产品它小黄人加持,努比亚方糖Pro30W氮化镓充电头迷你可爱,充电更快速苹果每当新款手机出来总是特别受欢迎,虽然很多人嘴上说着不买,但身体还是很诚实的。前段618期间,各种优惠券让iPhone12系列更加火爆。即便是iPhone系列手机不配备充电器的前腾讯企点客服工单自定义字段用户可通过账户中心工单管理自定义字段中新建自定义字段,自定义字段的基础信息以及字段属性。字段类型说明短文本字段应用场景适用于文本短小内容较少(40100),内容少,特征不明显的文本热搜腾讯实习生给总裁下任务雷军被马云妻子训斥B站日活苹果放弃封杀iOS虚拟机服务外媒9to5Mac报道,自2019年8月以来,在虚拟化公司开始向安全研究人员出售虚拟iOS设备后,苹果一直在法庭上与Corellium进行斗争。继去年首百度腾讯字节跳动扎堆,互联网大厂为何硬挤在医学科普赛道?互联网大厂的任何风吹草动都格外引入注目,如今,它们又统一将目光聚焦到了医学科普赛道。2021年6月,百度领投互联网健康科普平台有来医生B轮融资,融资规模近2亿元,是迄今为止医疗健康小米平板5Pro值得买吗?看了这5个特点再做结论不迟提起小米平板,大家已经有点陌生了,毕竟其也是好几年不更新了。不过行家出手,还是有看点的,这次小米发布了两款平板,尤其是2499元起的小米平板5Pro,还是有很多创新的。这款产品值不