3.extendsInheritance学过React的朋友一定对这个词不陌生。我们在创建类组件的时候经常需要用到这个词。其实这里每次都是继承React.Component的父类。(刚开始学习的时候,我以为这是固定的写法,其实不是。)4.typeconstraintobjecttype上图中,对象xiaoming在声明中定义了type为person_1,所以number并且小明的属性值类型已经确定,不能多也不能少。如上图,如果我添加了性别属性,就会报错。五、interface接口1.接口可以定义一个类的结构,定义一个类中需要哪些属性和方法。(这里不要迷路,类就是定义实例化对象的结构体)2.接口中的所有属性都不允许有特定的值3.在对象中定义接口时,只定义了对象的结构,接口本身不允许有特定值4.接口中的所有方法都不允许有逻辑操作。类似于抽象类中的抽象方法(接口和抽象类的区别在于,在抽象类中,我可以给某个属性赋初值,而抽象类中可以有抽象方法,也可以有具体的方法逻辑操作。但是接口中不允许有特定的值和方法体)6.接口可以组合属性,下面是允许的。在实现或继承时,实例属性是姓名年龄性别?6的组合。接口既可以定义类的结构,也可以定义对象的结构,但是不能实例化对象(不允许constxiaoming=newMyinter())对象和实例化一个对象。不要迷路。下面是实例化的对象(这里的用法和类型没什么区别)其实刚开始到这一步的时候我是很迷茫的。脱裤子放屁不是多余的吗?为什么我不直接classAA,然后设置结构体设备,实例化呢。为什么先接口,然后AA类实现接口?针对不同的使用场景,有不同的应用方法。我能想到的就是限制子类的内容,不让子类增加一些其他的属性。让我举一个不恰当的例子,如果你正在设计一款射击游戏。你定义一个名为gun的接口和其他属性,这些属性是后面所有的子枪都必须有的属性。(你多一个属性对其他枪来说不是不平衡吗?除非你收钱。。。)那么枪的子类也必须有这些属性。这相当于一个规范,非常类似于抽象类的概念。6.泛型这好比给函数的参数和返回值设置一些限制,让函数的具体作用更加清晰,也很方便后期的代码维护。以这个函数为例,这样看的话,你会想,这不就是返回常量参数吗?但是你不知道它会返回什么类型的值,也就是你后面维护起来会很混乱,你也不知道这个函数的具体位置。但是我不想一开始就把这个函数写死,比如下面这样,虽然这样很清楚,但是如果我想传入一个字符串怎么办?我是否必须重写一个函数foo2以便参数是字符串类型?我觉得这不是必须的,我只是想根据我的函数调用来设置参数的类型,那怎么办呢?这就是泛型的用处。不要问为什么<>展开,问是常态!至于里面的T,只是一个代号,你应该把它当作你数学上的一个假设,假设三角形的sin是X。不一定非得是T,你可以命名任何你想要的。但是就像循环中的i一样,我们约定先写T和P,但不一定,要看项目怎么规定。这时候调用函数,给参数赋值的时候,别忘了TS有自动检测的功能,忘了看我第一篇文章的第一节。ok现在我的T是“number”类型ok现在我的T是“string”类型因为这是TS的自动检测功能,你也可以:调用函数的时候直接设置T的类型,因为当你调用一个函数,你已经确切地知道你需要哪些值作为参数。下图是我指定了一个数字,但是给了一个字符串类型,那么就会报错。T也可以继承(扩展)接口,类这里就不赘述了。
