1.接口的作用
- 对程序设计进行限制和规范。
- 是一种规范的定义,定义行为和动作的规范。
- 类似于抽象类对子类的规范要求。
2.属性接口
作用:对json的约束
// 对json约束,表示必须传入label这个字段,且是字符串类型
function printLabel(labelInfo: { label: string }): void {
console.log(labelInfo);
}
printLabel({ label: '喇叭' }); // 必须传label这个字段
可选属性
interface s {
color?:string; // 参数可填可不填
width?:string
}
只读属性
interface s {
readonly color:string = 'blue'; // 参数只读不可改
}
s.color = 'red'; // error
3.函数接口
约束函数
interface SearchFunc {
(参数1:string,参数2:number):返回值类型(如boolean)
}
// 使用
let mySearch:SearchFunc;
mySearch = function(参数1,参数2):boolean{
return true
}
对于函数类型的检查来说,函数的参数名不需要与接口里定义的名字相匹配
4.可索引接口
对数组的约束
interface UserArr{
[index:number]:string;
}
var arr:UserArr=['aa', 'bb']
console.log(arr[0])
对对象的约束
interface UserObj{
[index:string]:string
}
var arr:UserObj = {
name: 'alex'
}
4.类类型接口
约束类
// 接口
interface Persen {
work():void;
}
// 类使用接口
class Human implements Persen {
public name:string;
constructor(name:string) {
this.name=name
}
eat() {
}
work() { // 必须实现接口中的work
}
}
5.接口扩展
接口可以继承接口
interface Animal {
eat(): void;
}
// 继承Animal接口
interface Persen extends Animal {
work():void;
}
// 执行接口的时候必须要有继承接口的eat方法
class Human implements Persen {
public name:string;
constructor(name:string) {
this.name=name
}
eat() {
}
work() {
}
}