接口继承实现新类型
- 特点:
- 接口继承通过
extends
关键字来创建新接口,新接口会拥有父接口的所有成员。
- 接口继承主要用于定义对象类型的层次结构,使得代码结构更清晰,便于维护和扩展。
- 它遵循严格的类型检查,对于对象字面量的赋值,必须严格匹配接口定义。
- 适用场景:
- 当你需要构建一个对象类型的继承体系,比如定义一系列具有相同基本属性和方法的对象类型时,适合使用接口继承。例如,在面向对象编程中,定义不同类型的用户,如普通用户、管理员用户等,它们都有一些共同的用户基本信息(如用户名、邮箱),可以通过接口继承来构建类型体系。
- 代码示例:
// 基础接口
interface Person {
name: string;
age: number;
}
// 通过接口继承创建新接口
interface Employee extends Person {
jobTitle: string;
}
// 使用
let employee: Employee = {
name: "Alice",
age: 30,
jobTitle: "Engineer"
};
类型别名交叉类型实现新类型
- 特点:
- 交叉类型通过
&
运算符将多个类型合并为一个类型,新类型同时拥有多个类型的所有成员。
- 交叉类型更灵活,它可以合并不同种类的类型,不仅仅局限于对象类型。
- 类型别名定义的交叉类型在使用上更简洁,它可以像使用任何其他类型一样使用。
- 适用场景:
- 当你需要将多个不同类型的属性合并到一个类型中,而这些类型不一定有继承关系时,适合使用交叉类型。例如,你有一个表示位置的类型和一个表示颜色的类型,你想创建一个同时具有位置和颜色属性的新类型,就可以使用交叉类型。
- 代码示例:
// 基础类型别名
type Point = {
x: number;
y: number;
};
type Color = {
color: string;
};
// 通过交叉类型创建新类型
type ColoredPoint = Point & Color;
// 使用
let coloredPoint: ColoredPoint = {
x: 10,
y: 20,
color: "red"
};