目录
一、接口概述:
二、接口类型介绍:
1、属性接口:
2、 函数接口:
3、可索引接口:
(1)可索引接口约束数组示例:
(2) 可索引接口约束对象示例:
4、类类型接口:
三、接口的扩展:
一、接口概述:
首先说明一点,接口是TypeScript的一部分,它不能转换成JavaScript代码段。
其次,接口是一种抽象的东西,在面向对象的编程中,接口是一种规范的定义,主要起到约束、限定的作用。因此,它的属性字段不可以进行初始化赋值,方法字段不可以有具体的实现。
接口不关心内部的状态数据,也不关心内部方法的实现细节,它只是规定类、对象必须提供某些属性和方法以满足接口的需求。
根据接口的在不同情况下的用途,可以将接口分为:属性接口、函数接口、可索引接口、类类型接口。同时接口还可以进行扩展,可以通过接口之间的继承机制来实现对其进行扩展。
接口是一个定义,抽象的。我们一般会通过类来对接口进行具体的实现。
二、接口类型介绍:
接口是比较灵活的,我们根据接口的用途可以将接口分为:属性接口、函数接口、可索引接口、类类型接口。
1、属性接口:
我们在编程过程中可以定义一个接口,接口内只有属性字段,我们可以成为该接口为一个属性接口。同时我们可以对于这些属性给与一些限定,例如属性的可选性“?”、属性的只读性“readonly”等。
示例:假设有一个函数需要接收指定类型的参数。
如果上述函数接收的对象属性不仅仅包含“name” 、"age",还有“gender”、“address”、"phone"等更多的属性呢?如果不仅仅只有 printPersInfo 这一个函数的参数要求参数是特定的类型呢?
这个时候我们就可以定义一个属性接口,利用接口来约束参数。
2、 函数接口:
函数接口主要用于约束函数的参数和返回值。要求该函数必须传入指定类型的参数,并且得到指定类型的返回值。
3、可索引接口:
可索引接口用于数组或者对象的约束。
// 定义了一个可索引接口
interface IterTemp {
[attrName: type1]: type2,
}
/*
* 对于数组而言:
* attrName 表示数组的索引
* type1 表示数组索引的类型
* type2 表示索引值,即数组元素的类型。(索引 <==\==> 索引值)
*
* 对于对象而言:
* attrName 表示对象的属性
* type1 表示的对象属性类型
* type2 表示对象的属性值类型。(属性 <==\==> 属性值)
*/
// type只能是string或者number类型。
(1)可索引接口约束数组示例:
(2) 可索引接口约束对象示例:
错误示例:
正确示例:
4、类类型接口:
类类型的接口类似于抽象类,实际上就是把“属性接口”和“函数接口”同时使用。类如果需要对接口进行实现,需要使用“implements”关键字。
三、接口的扩展:
接口可以通过继承来进行扩展。对接口进行实现的时候必须要实现所有接口定义的约束条件。
接口的继承使用extends关键字。