TypeScript学习笔记(四) | 接口interface

269 阅读1分钟

1.接口的作用

  1. 对程序设计进行限制和规范。
  2. 是一种规范的定义,定义行为和动作的规范。
  3. 类似于抽象类对子类的规范要求。

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() {
    }
}