8、TS 接口(interface)
2022-03-31 13:53:16 0 举报
AI智能生成
TS学习笔记
作者其他创作
大纲/内容
语法
利用 interface 关键词来定义接口
如上述示例
interface 中可以用分号或者逗号分割每一项,也可以什么都不加<br>
接口中不能含有具体的实现逻辑
接口一方面可以在面向对象编程中表示为 行为的抽象, 另外也可以用来描述 对象的形状
使用
上面的例子中,定义了一个接口 Person<br>
声明了一个变量tom, 类型是 Person;
这样就约束了<b><font color="#b71c1c"> tom 的形状必须和接口 Person 一致</font></b>。
定义的<b><font color="#b71c1c">变量中的属性不允许比接口少</font></b><br>
<b><font color="#b71c1c">多一些属性也是不允许的</font></b>
赋值的时候,变量的形状必须和接口的形状保持一致。
属性
可选属性
带有可选属性的接口与普通的接口定义差不多,只是<b><font color="#b71c1c">在可选属性名字定义的后面加一个?符号</font></b>。
对可能存在的属性进行预定义
能少,不能多
任意属性
无法预先知道有哪些新的属性的时候,可以<font color="#b71c1c"><b>使用[propName: string]: any</b></font>, <b><font color="#0d47a1">propName 名字是任意的</font></b>
注意
一旦定义了任意属性,<br>那么<b><font color="#b71c1c">确定属性和可选属性的类型都必须是它的</font><font color="#0d47a1">类型的子集</font></b><br>
属性 age 的类型 number 不是 <br>任意属性 propName 的类型 string 的子集,<br>所以报错了<br>
一个接口中只能定义一个任意属性
使用联合类型
如果接口中有多个类型的属性,则可以在任意属性中使用联合类型:
只读属性
一些对象属性只能在对象刚刚创建的时候修改其值。 可以<b><font color="#b71c1c">在属性名前用 readonly 来指定只读属性</font></b><br>
例如
使用 readonly 定义的属性 id 初始化后,<br>又被赋值了,所以报错了<br>
只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候
例如上例,报错信息有两处
第一处是在对 tom 进行赋值的时候,没有给 id 赋值。
第二处是在给 tom.id 赋值的时候,由于它是只读属性。
继承
接口继承接口
一个接口可以继承多个接口,创建出多个接口的合成接口。
LightableAlarm 继承了 Alarm、Wheel,除了拥有 alert、go 方法之外,还拥有两个新方法 lightOn 和 lightOff
接口继承类
一个类可以实现多个接口,在类中必须实现接口中的方法和属性
类型
函数类型接口
对于函数类型的类型检查来说,函数的参数名不需要与接口里定义的名字相匹配。
可索引类型接口
用来对数组和对象进行约束
可索引类型具有一个 索引签名,它描述了对象索引的类型,还有相应的索引返回值类型。
0 条评论
下一页