接口的定义
在 TypeScript 中,接口是一种结构化类型,用于定义对象的形状和约束。它可以描述对象的属性和方法。
产生原因
随着 JavaScript 的发展,代码复杂性提高,使用接口可以提高代码可读性和可维护性,通过明确规定对象结构来减少错误。
接口的基本语法
1 2 3 4 5
| interface Person { name: string; age: number; greet(): void; }
|
关键点说明
- 属性:接口中的属性可以是任意类型。
- 方法:接口也可以定义方法签名,但不需要实现。
- 可选属性:可以使用问号(?)标记某个属性为可选。
1 2 3 4 5
| interface Person { name: string; age?: number; greet(): void; }
|
接口与类的对比
特性 |
接口 |
类 |
定义 |
仅定义结构 |
定义结构及实现 |
实现 |
被类实现 |
可被类继承 |
多重继承 |
支持多重继承 |
不支持多重继承 |
构造函数 |
无 |
可以有构造函数 |
使用示例
1 2 3 4 5 6 7 8 9 10
| class Employee implements Person { constructor(public name: string, public age: number) {}
greet() { console.log(`Hello, my name is ${this.name}`); } }
const emp = new Employee('Alice', 30); emp.greet();
|
注意事项
- 确保实现类的方法与接口声明的方法签名一致。
- 接口可以扩展其他接口,通过
extends
关键字实现。
1 2 3 4 5 6 7 8 9 10 11
| interface Worker extends Person { jobTitle: string; }
class Manager implements Worker { constructor(public name: string, public jobTitle: string, public age?: number) {}
greet() { console.log(`Hi, I'm ${this.name}, a ${this.jobTitle}`); } }
|
通过这种方式,可以灵活地组织和管理代码,提高复用性和可维护性。