1、范型函数
范型的目的就是为了代码的复用性更高、类型是可变的,类型是在使用的时候才定的,语法格式如下:function 函数名字<T> (param:T):T,返回T,这里就不管是什么类型,只管传递,一旦确定类型,三个地方的T都必须一至,下图:
这里封装了一个函数,参数是什么不知道,参数类型是什么不知道,函数名字后面有个<T>,这个可以是M,可以任何之母也可以是任何汉字,比如:
这里尖括号里面改成汉字也不影响范型函数的定义,这里改了参数里面的函数也得改,返回值类型也得改,下图红框三处的必须是一至的:
范型函数的调用,函数名+字尖括号,尖括号里面是具体类型,简括号里面是什么类型,实参数就传什么,如下图:打印出abc
当然,调用的时候尖括号和尖括号的类容不写也是可以的,会根据传的类型自动推断,例如:
2、范型约束
上面讲到的范型的时候,没有任何约束,想传什么就传什么的,这样有好处有坏处,好处是灵活,坏处也是太灵活,如果想要约束传的类型,鸿蒙中使用的是接口属性,例如:
上述泛型方法定义了参数必须是ILength的属性length,而这个参数的类型不用管,哪怕是string类型也行,原因是string类型有length属性,如下图,我传字符串abc没问题,但是我们传Person不行,因为Person没有length属性,
如果我们在Person类里面添加个length属性,顺利通过。
3、多个范型的约束
多个范型约束的只需要在单个范型的基础上多添加范型和约束就行,如下图:
这里的类型1和类型2是对应的关系,类型必须得相同
4、泛型接口
定义接口的时候,结合泛型来定义就是泛型接口了,如下图:
紧接着,定义一个接口方法,传入什么就返回什么,紧接着定义一个方法,返回数组,下图:
实现这个接口,实现接口最主要的是实现接口大方法,下图:
假如实例化的时候传入string,需要修改如下:
5、泛型类
泛型累的定义只需要在类的后面加"<类型>"就是反省类,如下图:
定义了泛型类,类型没定,使用的时候想传什么类型就是什么类型,类型是通过构造函数传递的,对外提供了获得传入参数的方法,如下图:
总结:泛型是定义的时候不指定类型的,使用的时候在具体指定类型的灵活语法,有泛型方法、泛型接口、泛型类,泛型的约束是通过接口实现的,接口的属性是啥,之后的参数需要有相同的属性,多个泛型的顺讯需要一样
标签:范型,ArkTs,定义,鸿蒙,接口,类型,泛型,尖括号 From: https://blog.csdn.net/renfujiang/article/details/142902973