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

在typescript中,用接口(interface)来定义对象的类型。

和java中的类和接口的关系类似。

我在java书中看到接口是这样讲的:接口是一组常量和抽象方法的集合,抽象方法不给出方法体,由实现接口的类去实现,它提供方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为能力。

意思就是将某一类东西(类)的共同点(属性或方法)抽离出来放在接口(对,这个就是接口)里面,但是这些属性或方法并没有具体的值或方法体,只是进行了声明,告诉别人这是我最基本有的东西。

例如:我现在声明了一个动物接口(首字母大写),这里面有名字、年龄、性别三个属性和一个dream方法,假如这是动物们共有的,先把没有梦想的动物剔除掉(函数这里还没学到,我看了下觉着可能是这么写的,后面再详细讲函数,这里借用下),可以看到这里面只是声明属性和方法,并没有具体的值和方法体,下面来找个动物试验下:

f81dafb6161d00b2655a49ac3c09b9f8.png

老虎baby,我定义了一个变量tiger,它的类型是Animal,那么此时老虎就有了Animal中的属性和方法,就可以起名字了

0a5fc6515b572c437a7acaf460cf2559.png

现在这个老虎就可以把自己的信息告诉别人了(这里温习下嵌入表达式)

359479dcecdd1a3594af91cf24c87529.png

下面来正式的讲解一下typescript 中的接口使用:

1.接口名称首字母大写

2.实现接口类型的变量的形状要和接口一致

(即接口里面有什么,这个变量里面就必须要有什么,不可多不可少,字段名要相同,类型要相同,顺序不要求)

0f33b7b54c832e25de7e0af84c68be5b.png

这里少了sex不可以

d314302497787bb389da8cc532b48148.png

这里多了age也不可以

16306225866f30598888e7705ccae172.png

用方法变量调用的形式看了看,也是不可以的

d917006f603d6cb33d57f2a52377ed92.png

这样就没问题了

3.它有一些属性类型可以弥补上述2的不可能要求

(1)可选属性

db447786b21bd2b76d8f0d77b55ddbea.png

在可选的属性字段名后面加一个问号,好像在说:你想不想要我,不要我不写就是了(即可写可不写)

(2)任意属性

1)[propName:string]表示定义了任意属性取string类型的值(这儿不是太懂)

2a4a6b6886033bee30414e87b3c6c6a0.png

2)任意属性是可选属性

a87eb41650a36ffa6a7c5663153dd81e.png

3)命名随意且不限个数

afcfa9f795f250c98b19c0341d2901f3.png

4)一旦定义了任意属性,那么确定属性和可选属性必须是它的子属性,如下number不是string的子属性

3b7d8e191f14eb6e6b39ebecf6b7b5a6.png

(3)只读属性

d6395f1b1278a8adebb25baa2c4707dd.png

这里设置性别为只读的,就是说你在一开始的时候给它定义了,后来你就不能改了,就像是名字可以改,年龄也会变,但是性别可就不能改了(啊~好像也不一定)

a3367d4107b3e6b807abccfed481c322.png

还有需要注意的一点是,只读的约束是在第一次给对象赋值的时候,并不是在给只读属性第一次赋值的时候

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值