共计 1538 个字符,预计需要花费 4 分钟才能阅读完成。
三.extends 继承
学习过 React 的小伙伴肯定对这个单词不生疏,咱们创立一个类组件的时候往往就须要用到这个单词。
其实这里每次都是继承 React.Component 这个父类的。(我刚开始学习的时候认为这是固定写法呢,其实不然。)
四.type 束缚对象类型
上图中 xiaoming 这个对象在申明中 定义了类型为 person_1,那么小明的属性的数量和属性值的类型就曾经确定,不容许多或者少。如上图我多了一个 gender 属性,就会报错。
五.interface 接口
1. 接口能够定义一个 类的构造,定义一个类里须要有哪些属性和办法。(不要在这里迷了,类 是定义 实例化对象 的构造)
2. 接口中所有的属性都不容许有具体值
3. 接口在定义对象中时,也是只定义对象的构造,接口自身不容许有具体值
4. 接口中所有的办法,都不容许有逻辑运算. 相似于抽象类里的形象办法(接口和抽象类的不同是,抽象类里我能够给某个属性一个初始值,并且抽象类里能够有形象办法也能够有具体逻辑运算的办法。而接口中不容许呈现具体的值和 办法的办法体)
6. 接口能够合并属性,上面是容许的。在被实现或者被继承的时候,实例属性为 name age sex 三个合♟
6. 接口不仅能够用来定义类的构造,还能够定义对象构造,然而不能实例化对象(const xiaoming=new Myinter()是不容许的)要分分明定义对象和实例化对象的区别。不要迷了。
上面是实例化对象(此处的用法和 type 并无区别)
其实我刚开始到这一步的时候十分蛊惑,这不是脱裤子放屁多此一举吗,我干嘛不间接 class AA,而后设定结构器,而后实例化。为什么要先 interface,而后 class AA implements interface 呢?
具体的应用场景有不同的利用办法,我能想到的就是束缚子类的内容,不让子类多出一些其余属性。我举个不失当的例子,如果你在设计一款射击游戏。你定义了一个接口,名字叫 gun
等等其余属性,这是以下所有子枪必须领有切不能多的属性。(你多了一个其余属性对其余枪来说不就不均衡了吗?除非充钱 ….)
而后枪的子类也必须且只能有这些属性。这相当于一个标准,十分相似与抽象类的概念。
六. 泛型
这个就如同是给函数的参数,返回值设置一些限度,让函数的具体性能更加清晰,对于前期代码保护十分不便。
以这个函数为例子,你这样看会感觉啊,这不就是返回始终参数吗?然而你并不知道它要返回值的类型,也就是对于你前期保护来讲会很迷,不晓得这个函数用的具体位置。
然而我也不想一开始就把这个函数写死了, 比方上面,这样尽管很清晰,然而我如果要传入一个字符串呢?我是不是就得从新写一个函数 foo2 让参数是字符串类型呢
感觉这样也没必要,我就想依据我函数调用的时候我再设置参数的类型,那怎么办呢?
泛型的用途就来了。不要问为什么是 <> 这个扩起来,问就是标准!至于外面的 T,只不过是一个代号而已,你就当是你数学中的 假如,假如 三角形的 sin 为 X。
不肯定非得是 T,你轻易起名字都行。不过就像循环里的 i 一样,咱们约定先写 T,P,也不肯定,看我的项目怎么规定的吧。
这时候你就能够在你调用函数的时候,给参数赋值时,别忘了 TS 有自动检测的性能,遗记的去翻看我的第一篇内容的第一节。
ok 当初我的 T 就是 ”number” 类型
ok 当初我的 T 就是字符串 ”string” 类型
因为这是 TS 的自动检测性能,你还能够:在调用函数的时候间接设定 T 的类型,因为当你调用函数的时候,你曾经十分明确你须要参数的类型是哪些值了。
下图就是我规定了 number 我却给了一个字符串类型,那么就会报错.
T 还能够继承与(extends) interface,class
这里就不再深入研究