一、认识接口
我们之前声明类型的使用使用的是type
来进行声明,除此之外我们也可以使用接口来实现。
readonly
属性和?
可选属性。并且在关于接口存在一个不成文的规定,就是在接口定义式,名称前面加上I
来表示接口。三、索引类型
四、函数类型
type
来定义函数类型,具体代码如下所示。type
来进行定义。五、接口的继承
我们都知道类是支持单继承的,但是不支持多继承,但是接口也是支持继承的,不过接口是支持多继承。具体如上图所示,存在
ISwim
和IFly
两个接口,我们可以通过IAction
来继承他们。六、接口的实现
如上图所示,我们通过
implements
来对接口的实现,并且可以对多个接口进行实现,此时如果有需要传入该接口的地方,都可以将该类传入。七、交叉类型
之前我们学了
联合类型
,简单的代码实现如下所示那么什么是交叉类型呢?交叉类型就是将不同的类型合并在一起,使用
&
来表示。如上所示,此时所表示的类型为
never
类型,因为不存在既是number
类型的数据,又是string
类型的数据。如上图所示,如果对两个接口使用
交叉类型
,则实现的对象必须满足两个 接口。八、interface和type的区别
interface和type
都可以用来定义对象类型。1、如果是非对象类型,则我们可以使用type来进行定义。比如说directive,Alignment,和一些函数Function
2、如果是对象类型,两者存在一些差别:
type定义类型时,名字是不能重复的,interface是可以重复的,如果重复,则进行叠加在一起。
九、字面量赋值
如上图所示,如果我们在接口中没有定义
age属性
,但是当我们在赋值的时候增加了age
属性,此时就会报错。
// Type '{ name: string; age: number; add(num1: number, num2: number): number; }'
// is not assignable to type 'IIn'.Object literal may only specify kNown properties,
// and 'age' does not exist in type 'IIn'.
我们可以将对象赋值给一个变量,然后再将个变量重新赋值给新对象就不会报错,因为其他变量再进行赋值时会进行
freshness
擦除操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。