面试题答案
一键面试功能区别
- 交叉类型:将多个类型合并为一个类型,新类型同时具备所有参与交叉的类型的特性。它用于创建一个包含多个类型所有属性和方法的类型。例如,如果有类型
A
和类型B
,交叉类型A & B
就会有A
和B
的所有成员。 - 接口合并:多个同名接口声明会自动合并,合并后的接口包含所有同名接口的成员。接口合并主要用于在不同地方对同一个接口进行扩展。
使用场景区别
- 交叉类型:
- 适用于需要将多个独立类型的特性组合到一起的场景,比如组合不同功能模块的类型。
- 常用于临时创建一个包含多个已有类型特性的新类型,这些已有类型可能来自不同的模块或功能领域。
- 接口合并:
- 当需要对一个接口进行逐步扩展,或者在不同文件中定义同一个接口的不同部分时使用。
- 适合团队协作开发,不同开发者可以在各自的代码文件中对同一个接口进行补充和完善。
代码示例
// 交叉类型示例
type A = {
name: string;
};
type B = {
age: number;
};
// 创建交叉类型
let ab: A & B = { name: 'John', age: 30 };
// 接口合并示例
interface C {
color: string;
}
interface C {
size: number;
}
// 接口C现在同时有color和size属性
let c: C = { color: 'red', size: 10 };
在上述代码中,交叉类型 A & B
创建了一个新类型,它同时拥有 A
和 B
的属性。而接口 C
通过两次声明实现了合并,最终 C
接口具有两个属性 color
和 size
。