TypeScript中Interface的使用

Interface的使用

1.接口的基础应用

对于接口的简单应用,我们直接上例子吧,比如我们以学生举一个例子。

// 创建接口
interface Student {
    name: string;
    age: number;
    exam?: number;  //非必须属性在“:”前加上“?”即可
    [propname: string]: any;    //此接口允许添加新的属性
}
// 接口应用实例
const getStudent = (student: Student) => {
    console.log("名字:" + student.name)
    console.log("年龄:" + student.age)
    // 做一个小判断,如果有成绩则输出成绩,没有成绩则输出提示
    student.exam ? console.log("成绩" + student.exam) : console.log("此人无成绩")
}
// 数据
const xiaobai = {name: "小白", age: 21, exam: 90}
const xiaohei = {name: "小黑", age: 18}
// 以传值的形式调用方法
getStudent(xiaobai)
getStudent(xiaohei)

在这里插入图片描述

2.接口中的方法

基于上面的例子,如果我们想给Student接口中存一个方法work(),那么我们直接在接口中声明方法并约束其返回值类型即可。

interface Student {
    name: string;
    age: number;
    exam?: number;  //非必须属性在“:”前加上“?”即可
    [propname: string]: any;    //此接口允许添加新的属性
    work(): string;     //声明方法的返回值类型为string
}

在接口中声明完方法,接下来我们在实际对象中完善该方法,以便后面的使用。

const xiaobai = {
    name: "小白", age: 21, exam: 90,
    work() {
        return "学习就是我的工作"
    }
}
const getStudent = (student: Student) => {
    console.log("名字:" + student.name)
    console.log("年龄:" + student.age)
    // 做一个小判断,如果有成绩则输出成绩,没有成绩则输出提示
    student.exam ? console.log("成绩" + student.exam) : console.log("此人无成绩")
    console.log(student.work())
}

3.接口中类对接口的实现

我们在实现类的时候记得要把class写的全一点,否则会报错

class xinsheng implements Student {
    name = "小白";
    age = 21;
    work() {
        return "学习就是我的工作"
    }
}

4.接口之间的继承

Student接口可以作为一个基础,如果我们需要一个新的基于Student接口的方法,比如班长Monitor接口,其中Monitor中有一个特殊的方法收作业shouzuoye,那么我们就可以这么实现:

interface Monitor extends Student {
    shouzuoye(): string;
}

具体实例:

interface Student {
    name: string;
    age: number;
    exam?: number;  //非必须属性在“:”前加上“?”即可
    [propname: string]: any;    //此接口允许添加新的属性
    work(): string;     //声明方法的返回值类型为string
}
// 接口的继承
interface Monitor extends Student {
    shouzuoye(): string;
}
// 接口应用实例
const monitor = (teacher: Monitor) => {
    console.log("名字:" + teacher.name)
    console.log("年龄:" + teacher.age)
    // 做一个小判断,如果有成绩则输出成绩,没有成绩则输出提示
    teacher.exam ? console.log("成绩" + teacher.exam) : console.log("此人无成绩")
    console.log(teacher.work())
    console.log(teacher.shouzuoye())
}
const xiaohei = {
    name: "小黑", age: 18,
    work() {
        return "学习就是我的工作"
    },
    shouzuoye(){
        return "大家把作业交给我"
    }
}
// 以传值的形式调用方法
monitor(xiaohei)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43592084/article/details/109542501