第四章 TypeScript 接口的深入探索
在 TypeScript 中,接口是一个非常重要的概念,它在面向对象编程中发挥着关键作用。
一、概述
接口通常作为一种契约或规范,让类去遵守,确保类实现某些特定的行为或功能。这有助于提高代码的可维护性和可扩展性,使得不同的组件可以更好地协同工作。
二、语法说明
1. 接口定义
使用 interface
关键字定义接口。通常情况下,接口中只会包含属性和方法的声明,而不包含具体的实现细节,具体的实现由实现类来完成。例如:
interface PersonInt {
id: number;
name: string;
age: number;
introduce(): void;
}
2. 接口实现
接口的实现需要用到 implements
关键字。在实现类中,需要包含接口属性的赋值逻辑,以及接口方法的实现逻辑。例如:
class StudentClass implements PersonInt {
id: number;
name: string;
age: number;
constructor(id: number, name: string, age: number) {
this.id = id;
this.name = name;
this.age = age;
}
introduce(): void {
console.log("我是一名学生");
}
}
三、多态
多态是面向对象程序设计中的一个关键概念,它允许不同类的对象对同一消息做出不同的响应。
1. 具体案例
首先创建一个 PersonInterface
接口的实现类 TeacherClass
:
class TeacherCalss implements PersonInt {
id: number;
name: string;
age: number;
constructor(id: number, name: string, age: number) {
this.id = id;
this.name = name;
this.age = age;
}
introduce(): void {
console.log("我是一名老师");
}
}
然后创建一个学生对象和老师对象,注意两个对象的类型均可以设置为 PersonInt
:
let a1: PersonInt = new StudentClass(1, 'aa', 23);
let a2: PersonInt = new TeacherCalss(2, 'bb', 21);
最后分别调用 a1
和 a2
的 introduce()
方法,就会发现,同样是 PersonInt
类型的两个对象,调用同一个 introduce()
方法时,表现出了不同的行为,这就是多态。
a1.introduce(); // 我是一名学生
a2.introduce(); // 我是一名老师
四、接口的作用
在传统的面向对象编程场景中,接口主要用于设计和组织代码,使代码更加容易扩展和维护。
1. 订单支付系统示例
假如现在需要实现一个订单支付系统。按照面向对象的习惯,先定义一个订单类 Order
:
// 初始的订单类
class Order {
totalAmount: number;
constructor(totalAmount: number) {
this.totalAmount = totalAmount;
}
pay() {
console.log("支付金额:" + this.totalAmount);
}
}
如果这个支付系统需要支持其他支付方式,我们可以定义一个支付的接口,接口中声明一个 pay
方法,用来规范实现类必须实现支付逻辑。
interface PaymentInterface {
pay(money: number): void;
}
然后在订单类中增加一个 PaymentInterface
的属性,并在订单类中的 pay
方法中调用 paymentInterface
的 pay
方法。
class Order {
totalAmount: number;
paymentInterface: PaymentInterface;
constructor(totalAmount: number, paymentInterface: PaymentInterface) {
this.totalAmount = totalAmount;
this.paymentInterface = paymentInterface;
}
pay() {
console.log("支付金额:" + this.totalAmount);
this.paymentInterface.pay(this.totalAmount);
}
}
这样改造之后,就可以很容易地在不改变现有代码的情况下,支持新的支付方式。比如现在需要支持支付宝支付,就可以创建一个 AliPay
类并实现 PaymentInterface
接口。
class AliPay implements PaymentInterface {
pay(money: number): void {
console.log("支付宝:" + money);
}
}
五、TypeScript 中接口的特殊性
TypeScript 中的接口是一个非常灵活的概念。除了用作类的规范之外,也常用于直接描述对象的类型。
1. 描述一般对象类型
例如现在有一个变量的定义:
let stu: { name: string, age: number, gender: string } = { name: 'aa', age: 11, gender: '男' };
可以看到变量的值作为一个一般对象,变量的类型为 {name:string,age:number,gender:string}
。此时就可以声明一个接口来描述该对象的类型。
interface Stu {
name: string;
age: number;
gender: string;
}
let stu1: Stu = { name: 'bb', age: 21, gender: '男' };
总结:TypeScript 中的接口为开发者提供了一种强大的工具,用于规范类的行为、实现多态以及描述对象类型。通过合理使用接口,可以使代码更加清晰、可维护和可扩展,提高开发效率和代码质量。
原文地址:https://blog.csdn.net/zhiqiuqiu2/article/details/143597210
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!