在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部状态数据,也不关心这些类里的方法的实现细节,它只规定这批类里必须提供某些方法,提供某些方法,提供这些方法的类就可以满足实际需要。
通过 interface 关键字定义接口

  • 属性类接口
对 json 的约束

interface 父类名{
	子类必须属性a:数据类型;
	子类必须属性b:数据类型;
}

function 子类名(参数类型:父类名){ }
调用

子类名({ 必须属性a和b })
  1. 上面这样调用的话小括号里只能有 子类必须属性a和b,不能有其他属性,而且a和b还要符合数据类型
  2. 可以在外部声明一个变量,然后给这个变量赋值给包含 子类必须属性a和b
    属性值,然后再调用子类名的时候,直接传参这个变量名,这样就实现了还可以传其他属性的方法
  • 函数类型接口
  1. 对方法传入的参数,以及返回值的约束
interface 父类名{
	(必选参数a:类型,必选参数b:类型):返回值类型;
}

let 子类函数名:父类名 = function(必选参数a:类型,必选参数b:类型):返回值类型{
	函数内容
}
调用

子类函数名(符合参数a和b的数据类型的值)
  • 可索引接口
  1. 对数组,对象的约束
interface 父类名{
	[index:索引号的数据类型]:约束的数据类型
}

let 名称:父类名 = [约束的数据类型,....]
  • 类类型接口
    1: 对类的约束,和抽象类有点相似
interface 接口名称{
	属性类限制 //属性:数据类型;
	方法限制	//函数名(参数:数据类型):返回值数据类型;
}
class 类名 implements 接口名称{
	必须要有的属性
	constructor(参数:数据类型){ }
	必须要有的方法
}
  • 接口扩展
    1: 接口可以继承接口,本质上还是继承
interface 接口名{ 方法 }
interf 接口名 extends 被约束接口名{ 方法 }