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