在TypeScript编程语言中,接口(Interface)是一种强大的工具,用于定义对象的结构。接口可以看作是类的契约,它规定了类必须实现的属性和方法,但不包含任何实现细节。本文将带了解如何在TypeScript中使用接口,包括定义接口、在类中实现接口、接口继承接口以及接口继承类。
在TypeScript中,接口使用interface
关键字定义。接口中定义的所有成员默认都是公开的(public)。接口不能包含私有成员,也不能包含成员的实现。下面是一个定义接口的例子:
interface Person {
fullName: string;
toString(): void;
}
在这个例子中,定义了一个名为Person
的接口,它要求实现它的类必须有一个名为fullName
的字符串属性和一个名为toString
的方法。
一旦定义了接口,就可以在类中实现它。实现接口的类必须提供接口中所有成员的实现。下面是一个实现Person
接口的类的例子:
class Employee implements Person {
empID: string;
fullName: string;
constructor(eID: string, name: string) {
this.empID = eID;
this.fullName = name;
}
toString() {
console.log(`EMP ID of ${this.fullName}: ${this.empID}`);
}
}
在这个例子中,创建了一个名为Employee
的类,它实现了Person
接口。类中定义了empID
和fullName
属性,以及一个toString
方法,该方法打印员工的详细信息。
TypeScript允许接口继承另一个接口,这样可以将一个接口的成员复制到另一个接口中。这使得接口更加灵活,可以将接口拆分成可重用的组件。下面是一个接口继承另一个接口的例子:
interface Vehicle {
// Vehicle interface members
}
interface TwoWheeler extends Vehicle {
// TwoWheeler interface members
}
在这个例子中,TwoWheeler
接口继承了Vehicle
接口,这意味着TwoWheeler
接口将包含Vehicle
接口的所有成员。
TypeScript还允许接口继承类类型。在这种情况下,类成员的声明会被继承到接口中,但不包括它们的实现。这与类继承接口类似。下面是一个接口继承类的示例:
class Vehicle {
constructor(public brand: string) { }
getBrandName(): string {
return this.brand;
}
}
class Engine {
constructor(public manufacturer: string) { }
getManufacturerName(): string {
return this.manufacturer;
}
}
interface TwoWheeler extends Vehicle, Engine {
getBrandName(): string;
getManufacturerName(): string;
}