TypeScript中Interface的使用
2020-11-13 本文已影响0人
咧咧0622
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)
