网站推广包括哪些,龙岗网页设计,做网站CentOS还是win好,网站模板下载百度云链接怎么做序言#xff1a;
本文详细讲解了关于ArkTs语言中的泛型#xff0c;其中包含泛型函数、泛型接口、泛型约束、泛型类及其中参数的使用方法#xff0c;补充了一部分接口相关的知识#xff0c;包括接口的继承和具体实现#xff0c;也写到了一些边边角角的小知识#xff0c;剩…序言
本文详细讲解了关于ArkTs语言中的泛型其中包含泛型函数、泛型接口、泛型约束、泛型类及其中参数的使用方法补充了一部分接口相关的知识包括接口的继承和具体实现也写到了一些边边角角的小知识剩余参数和展开运算符便于我们在实际代码编写中让自己的代码更加简洁可读性更强。
笔者也是跟着B站黑马的课程一步步学习学习的过程中添加部分自己的想法整理为笔记分享出来如有代码错误或笔误欢迎指正。
B站黑马的课程链接鸿蒙课程介绍_哔哩哔哩_bilibili
往期笔记
【01】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-ArkTs基础语法与界面开发基础
【02】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-界面进阶与布局排布附QQ登陆、得物、京东登陆综合案例代码
【03】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-更多布局弹性/层叠方式与界面开发综合附飞狗卡片B站卡片案例实战开发支付宝界面代码
【04】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-ArkTs进阶运算符状态管理附综合案例美团购物车
【05】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-条件渲染if/switch判断与for/while循环附计数器、京东加购案例【06】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-综合案例·生肖抽奖卡具体实现类似支付宝集五福【07】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Swiper轮播组件与样式结构重用
【08】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Scroll容器与Tabs组件 【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解属性、方法、继承复用、判断
目录
一.剩余参数和展开运算符
1.剩余参数
2.展开运算符
二.接口补充
1.接口补充-接口继承
2.接口补充-接口实现
三.泛型
1.泛型函数
2.泛型约束
3.多个泛型参数
4.泛型接口
5.泛型类 一.剩余参数和展开运算符
1.剩余参数
1简介
剩余参数的语法我们可以将函数或方法中一个不定数量的参数表示为一个数组。 2语法及基础代码实例
①语法
//剩余参数只能写在最后一位
function 函数名(参数1,参数2,...剩余参数数组){//逻辑代码//之前的参数挨个获取即可//剩余参数以数组的形式获取
}
②基础代码实例
function sum(numA:number,numB:number,...theArgs:number[]){let totalnumAnumB;for(const arg of theArgs){totalarg;}return total;
}
console.log(sum(1,2,3).toString())
console.log(sum(1,2,3,4).toString()) 2.展开运算符
1简介
处于程序稳定性以及运行性能考虑在ArkTs中 ...(展开运算符)只能用在数组上 2语法及基础代码实例
const numArr1:number[][1,2,3,4]
const numArr2:number[][5,6,7]
//合并到一起
const totalArr:number[][...numArr1,...numArr2]
console.log(totalArr.toString()) 二.接口补充
1.接口补充-接口继承
1简介
接口继承使用的关键字是extends。 2语法及基础代码实例
①语法
interface 接口1{属性1:类型
}
interface 接口2 extends 接口1{属性2:类型
} ②基础代码实例
interface IAnimal{name:string
}
interface ICat extends IAnimal{color:string
}
const cat:ICat {name:布偶猫,color:白色
} 2.接口补充-接口实现
1简介
可以通过接口结合implements来限制类必须要有某些属性和方法 2)语法及基础代码实例
①语法
interface 接口{属性:类型方法:方法类型
}class 类 implements 接口{//必须实现 接口中定义的属性、方法//否则会报错
} ②基础代码实例
interface IDog{name:stringbark:()void
}class Dog implements IDog{name:stringfood:stringconstructor(name:string,food:string) {this.namenamethis.foodfood}bark(){console.log(${this.name}一边吃${this.food}一边大叫)}
}let d1:Dognew Dog(河马小狗,达犀牛)
d1.bark() 三.泛型
简介
泛型可以让【函数】等与多种【不同的类型】一起工作灵活可复用
通俗一点说就是类型是可变的 1.泛型函数
1语法
//原函数
function fn1(temp:string):string{return temp
}
function fn2(temp:number):number{return temp
}
function fn3(temp:boolean):boolean{return temp
}
//使用泛型后
function fnType(temp:Type):Type{return temp
}fnstring(1,2,3)
fnnumber(1) tips
ArkTs会根据默认传参进行类型腿短动态的配置Type类型参数的值。
但是大家能写全尽量写全这样会提高代码的可读性。
fn(true)
fn([1,2,3,4,5]) 2基础代码实例1
①练习需求
定义函数参数是数组存的类型不定返回数组长度 ②具体代码
function getLengthT(arr:T[]):number{return arr.length
}
console.log(,getLengthnumber([1,2,3,4,5]))
console.log(,getLengthstring([河马,荷花,大炮])) 3基础代码实例2
①练习需求
定义函数参数是数组存的类型不定返回数组的最后一项。 ②具体代码
function getLateT(arr:T[]):T{return arr[arr.length-1]
}
console.log(,getLate([1,2,3,4,5,6,7])) 2.泛型约束
1简介
之前的类型参数可以传递任何类型没有限制。
如果希望有限制→泛型约束
interface 接口{属性:类型
}
function 函数Type extends 接口(){} 2基础代码实例
interface ILength{length:number
}
function fnT extends ILength(param:T){console.log(,param.length)
}
fnstring(hahahaha)
fnboolean(true) //会报错 interface ILength{length:number
}
function fnT extends ILength(param:T){console.log(,param.length)
}
fnstring(hahahaha)
/*fnboolean(true)*/
class Desk{length2
}
let d1new Desk()
fnDesk(d1) 3.多个泛型参数
1简介
日常开发的时候如果有需要可以添加多个 类型变量 2基础代码实例
function funcAT,T2(param1:T,param2:T2){console.log(参数1,param1)console.log(参数2,param2)
}
funcAstring,number(河马,888)
funcAstring[],boolean[]([荷花],[false]) 4.泛型接口
1简介
定义接口的时候结合泛型定义就是泛型接口。
interface 接口Type{//内部使用Type
} 2基础代码实例
interface IdFuncType{//约定有两个方法id类型不定可能是string可能是number//1.传入id值就返回id值。//2.返回一个ids数组id:(value:Type)Typeids:()Type[]
}let obj1:IdFuncnumber{id(value){return value},ids(){return[1,2,3,4,5]}
}let obj2:IdFuncstring{id(value){return value},ids(){return[001,002,003]}
} 5.泛型类
1简介
定义类的时候结合泛型定义就是泛型类。
class 类名Type{//内部可以使用Type
} 2基础代码实例
//泛型类定义类的时候配合泛型一起定义
class PersonT{id:Tconstructor(id:T) {this.idid}getId(){return this.id}
}
let p1:Personstring new Person(河马)
let p2:Personnumber new Person(123456789)
console.log(p1.getId())
console.log(p2.getId().toString()) 感谢观看。