6.typescript-对象的类型-接口

在typescript中,用接口(interface)来定义对象的类型。
和java中的类和接口的关系类似。
我在java书中看到接口是这样讲的:接口是一组常量和抽象方法的集合,抽象方法不给出方法体,由实现接口的类去实现,它提供方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为能力。 
意思就是将某一类东西(类)的共同点(属性或方法)抽离出来放在接口(对,这个就是接口)里面,但是这些属性或方法并没有具体的值或方法体,只是进行了声明,告诉别人这是我最基本有的东西。
 
例如:我现在声明了一个动物接口(首字母大写),这里面有名字、年龄、性别三个属性和一个dream方法,假如这是动物们共有的,先把没有梦想的动物剔除掉(函数这里还没学到,我看了下觉着可能是这么写的,后面再详细讲函数,这里借用下),可以看到这里面只是声明属性和方法,并没有具体的值和方法体,下面来找个动物试验下:
 
老虎baby,我定义了一个变量tiger,它的类型是Animal,那么此时老虎就有了Animal中的属性和方法,就可以起名字了
 
现在这个老虎就可以把自己的信息告诉别人了(这里温习下嵌入表达式)
 
下面来正式的讲解一下typescript 中的接口使用:
1.接口名称首字母大写
2.实现接口类型的变量的形状要和接口一致
(即接口里面有什么,这个变量里面就必须要有什么,不可多不可少,字段名要相同,类型要相同,顺序不要求)
 这里少了sex不可以
 
 
 这里多了age也不可以
 
 
用方法变量调用的形式看了看,也是不可以的
 
这样就没问题了
 
3.它有一些属性类型可以弥补上述2的不可能要求
(1)可选属性
在可选的属性字段名后面加一个问号,好像在说:你想不想要我,不要我不写就是了(即可写可不写)
 
(2)任意属性
     1)[propName:string]表示定义了任意属性取string类型的值(这儿不是太懂)
     

 

     2)任意属性是可选属性
     

 

     3)命名随意且不限个数
     

 

     4)一旦定义了任意属性,那么确定属性和可选属性必须是它的子属性,如下number不是string的子属性
     
 
(3)只读属性
这里设置性别为只读的,就是说你在一开始的时候给它定义了,后来你就不能改了,就像是名字可以改,年龄也会变,但是性别可就不能改了(啊~好像也不一定)
 
还有需要注意的一点是,只读的约束是在第一次给对象赋值的时候,并不是在给只读属性第一次赋值的时候
 
 
posted @ 2017-08-14 14:27  约爱丽丝下午茶  阅读(1671)  评论(0编辑  收藏  举报