00:00
下面呢,咱们来看看翻型接口啊,这个东西其实也是蛮好用的,而且用的地方也是比较多。什么时候会用到泛型接口呢?就是说当我通过一个接口去约束函数或者说约束类的时候。啊,那这个时候呢,这个类中或者说函数当中用到了一些类型,这个类型是不可预知的,这个时候我们可以通过泛型接口来进行约束啊好,那我们通过一个例子来看看这个方向接口到底是怎么用的啊。添加一个文件,这个是零三杠泛型接口,点TS。命点TS当中需要引入这个文件。好,下边这些我们都不要了啊,保存一下OK。呃,在这里边儿呢,我们说的是泛型泛型接口啊,好为了节省时间啊,我在这里边这些东西我就都复制过来了啊。逗号啊说在定义接口的时候,为接口中的属性或者方法定义泛型类型,然后在使用接口的时候呢,在指定具体的泛型类型,怎么可以怎么去理解这个东西呢?咱们来看啊,我这块呢,先把这个基本的代码结构先写出来,然后呢,我们提个需求,通过这个需求呢,来看看这个分类接口啊,比如说我的这个需求是这个样子的啊说。
01:19
呃。定义定义一个类啊,然后呢,啊,用来存储什么呢?这个用户的相关信息。那用户的相关信息无非就是什么呢?ID呀,名字呀,然后比如说年龄啊啊,我就举这么两个例子啊。那现在我是不是应该有这样的一个类吧,然后那我这块定义一个用户信息的类,那我就写个class,然后来个user吧,大写user啊。User,好,那我应该有ID,那我就给他来一个数字类型呗,是吧,这个是用户的ID啊,然后再来一个名字。
02:03
用户的姓名啊,再来一个H,这个是number类型,嗯,用户的年龄好都搞定啊,比如说我希望某一个属性它可有可无,那我可以怎么办啊?我是不是可以在属性的后边加上一个问号吧,是吧?诶英文的啊好,那注意这个问号是什么意思啊,应该是代表该属性是吧?可有可无。那咱们就是简单复习一下这个问号啊,好废话呢,也不多说,我们继续。那这是第一个需求,紧接着啊,说什么呢,呃,通过。通过啊,一个类的实例对象,这个应该换个行会更好一些啊,通过一个类的实例对象啊,调用相关的这个方法可以干嘛呢?添加多个多个用户信息对象,然后呢,调用C调用这个什么,比如说叫get user ID啊调用调用这个方法啊,可以根据什么呢?哎,ID获取某个。
03:10
指定的用户信息对象啊,那我前面这个调用相关的方法这块也别相关了,比如说调用ad。啊,方法可以添加多个用心对象是吧,那按照这个情况来看的话,我是不是应该应该再有一个类吧,因为这是属于面向对象的编程思想啊,所以说我应该再定义一个类干嘛呢?可以针对用户的信息。对象进行什么呢?增加及查询的操作。是吧,那我应该再来一个类class,比如说这个class呢,我就给它来一个叫做user CD吧。CD是什么意思啊?解释一下。C rud啊,它代表应该是c great,然后呢,还有什么呢?还有这个great啊,还有这个update,还有这个什么呢?Delete啊,就是增删改查嘛,好,那我这个里边大家想我应该有一个A的这么一个方法是吧?这个方法干嘛的呢?是用来存储用户信息对象,那我还应该有一个get,比如说叫做user ID的这么一个方法,这个方法是干嘛呢?是根据。
04:23
ID查询指定的用户信息对象是吧?那我这边呢,大家想我用什么东西来存储用户呢?那我最好的方式是不是应该有一个数组吧,是吧A。嗯,A,比如说来一个什么呢?User类型的,那它应该有这样的一个数组是吧,这个数组它是用来什么呢?保存多个用户,多个user类型的这个用户信息对象,但是呢,我要是现在这么写代码,可以实现上面的功能。但问题是什么呢?我如果通过这种方式来实现这个功能的话,也就意味着将来我这个类实例化的时候,调这个date属性,添加这个用户信息对象时候,只能是user类型。
05:09
那比如说将来我可能要调用这个方法,针对一个动物类型的数据进行操作,怎么办呢?那这个位置是不是就被我写死了吧,包括爱的这个方法是吧,我把这个注释写一下啊,把它拿到上面来。这个也是啊,拿上面来好,包括我下边这个方法是吧,如果说我要添加一个用户,那我这块应该有这么一个参数,这个参数应该是属于做类型的。Us类型啊,U类型的是吧,包括它的这个返回值应该是user类型,或者说什么类型的,那如果说根据ID,那ID我这块是一个number类型,这没有问题是吧,主要问题是将来如果我真的是一个动物的数据进行操作。进行增加操作或者说查询操作,那我现在这个类型是不是就得改吧,所以说啊,咱们应该让这个类当中属性或者方法它的类型变得更加灵活一些,那这个时候怎么做呢?我们可以使用泛型接口,好,这个时候我们来看啊,定义一个泛型接口,来一个interface,比如说这个叫做iface。
06:08
BA,什么呢?C rud啊,我来这么一个接口,接口里边必然应该有date,必然应该有ad,必然还应该有什么呢?叫get user ID。但是呢,我在这里边可以去指定它的这个泛型类型,我可以在这个位置直接指向一个什么呢?T是吧,那这样将来你这个date是什么类型的呢。我们可以认为是ay,然后尖括号T是这种类型的,那如果说我这个datac里边传user,尖括号当中传user,那就是user类型,我传animal就animal类型,我传phone就是phone类型,就手机类型嘛,是吧?哎,所以说这个就是所谓的泛型接口,那我们接着往后写啊,比如这个ad。在声明的时候是吧,它里边将来是你给我一个用户对象,那我添加一个用户的信息,所以说这块的话,我可以写个T,然后冒号来一个什么大体。当然它的返回值我也可以认为是什么T也没有问题是吧,包括这个user,将来你给我传的ID,那应该是数字类型,这没有问题的,那我可以给你返回来的,当前也是这种类型的数据。
07:04
啊,当然这个位置得加上一个冒号。这样呢,我就定义了一个方案接口,方案接口怎么用啊是吧?哎,OK,这个位置在这I。安啊。是吧,然后后边来上一个什么呢?I base ru。并且给定给他指定这个类型,现在我指定就是user类型。是不是好,那我这个位置指定了U类型,那这里边就会以U到U类型的数据,那我这个位置将来指定是animal,那同样的里边也会针对animal类型进行操作嘛,是吧?好,然后我们来实现一下。首先这个I这个位置。啊,注意它的这个返回值应该是U啊。然后比如说我将来来一个new user。符号咱们来看啊,这个错误就没有了是吧?当然这个代码不能这么写啊,好,包括它将下来反过来也是user类型的,OK,那这样呢,咱们上面定义了泛型的接口,下面有个类实现了这个泛型接口是吧?好让我们看读到如果是at at属于属于添加用户嘛,添加用户那必然应该是通过这个什么呢?呃,this.date date就是一个数组嘛。
08:13
点来一个push,里边传入一个user对吧,当然我希望他的user对象能够user对象的ID能够自动的产生出来。那等于来一个date嘛,点到嘛,如果希望它不一样啊,因为这个代码执行很快,可能会什么呢?瞬间就执行完毕,所以说这个ID可能会重复,咱们这样加上一个ma.random产生一个C数,保证它的ID是不重复的,最终呢,我再把user给他返过去,是不是就搞定了吧?啊,这个是产生ID啊,然后呢,这个是添加用户信息对象,把用户信息对象添加到什么呢?Date数组中。然后下边这个位置。是吧,根据传过来的这个ID是吧,诶少半括号是吧,根据传过来这个ID啊,这个位置没写完啊。
09:01
根据传过来的这个ID干嘛呢?查询某个这个用户信息是吧,那我就直接这样做,给他返回吧,Return,通过this.data.find。哎,然后把谁丢进去啊,把这个user是吧,里边的每一个数据,因为this.date是数组了,数组呢存放的是user类型的数据,那里边每一个数据都是一个user对象,然后通过user对象里边有自己的这个ID,和你传进来的ID做一个对比,是否一致,找到就找到,没找到就没找到是吧?好,那我们现在来看一下这块有个u c rud是吧?诶,编译的时候报错了吗?我们来看一看啊。报错没关系啊。好,泛型接口这个位置报错了是吧?Token在这个位置,Src接口。好,我们来看一下是不是我上边的这个代码这个位置多东西了,还真是啊这呢啊,那我把它去掉一下啊。然后再格式化一下,保存一下。然后我们再去刷新一下。诶,好了啊,刚才应该是多了半个括号是吧,好没有问题,那现在我们来用一下啊,怎么用。
10:05
啊,那就在这儿吧,这个位置啊干嘛呢,实例化,实例化什么呢?添加用户信息对象的,用户信息对象的这个类谁呢,叫做user c rud。Rud啊,Cost来上一个什么呢?User CD等于啊,它应该是什么呢?这个user c rud的这个类型等于new user c rud好。然后呢,我们看里边它没有什么这个参数是吧,直接可以传的啊,不用啊,我们直接就是调这个方法就OK了啊,比如说我现在。通过这个UCRUd.I的调方法,我们来看啊,方法方法看到能看到了吧,括号里边是不是得传入一个user类型的吧,简单一点直接拗。然后呢,U类型里边有什么数据呢?我们来看看啊,暂时它里边就是三个属性嘛,那我这样啊,再给大来一个构造函数,直接初始化数据嘛,是吧?括号应该有一个name字符串类型,逗号再来一个age,应该是一个number类型对吧。
11:11
括号Z点内,这个是内等于内蒙。然后呢,再来一个z.H等于H格式化一下啊啊保存我现在来看啊,这里边需要数据,比如说第一个Jack啊,来一个20岁。咔咔咔,这就复制呗,是吧,这是调用添加数据的方法,哎,呃,第一个是借,第二是to,第三个是路西。第四个,来一个肉丝吧。然后这个就是二十五二十三,然后再来一个21搞定是吧,好。添加进去了吗?我不知道啊,Canl.log括号啊,来个user,他点什么贝嘛,保存看效果有没有数据啊。好,果然里边有四个优则是吧?啊,分别是Jack Tom Lucy和roser 20 25 23 21啊搞定是吧?诶那我这个时候,比如说我在这儿啊,注意注意,我来一个cost,来一个user,等于它,因为它返回来的是一个对象嘛,我们看爱的方法啊,返回来是一个user类型的对象是吧?那我要它干嘛呢?我可以从它这个里边取出来ID是吧,如果是降子。
12:22
那我就写个ID嘛,结构出来ID不一样吗?是不是,然后做什么事情呢,我去看啊。通过user c rud去调这个get user的ID的方法里边我传入一个什么ID?对不对,然后呢,我再来一个count,再来一个user,等于。看看这个对象有还是没有啊。嗯,保存一下,我们看一下。来看一下最终的这个优走对象啊,啊age是23岁,他有自己的ID,然后name是Lucy,我们第三个数据是不是Lucy呢?是Lucy很明显是没有问题的是吧?这个是根据ID啊,查询用户信息对象数据啊,那整个的这个小例子当中,采用的是面向对象的编程思想,然后呢,并且用到了这个定义啊,并且用到了这个泛型接口啊。
13:08
那么咱们先停一下。
我来说两句