定义区别
- 交叉类型:将多个类型合并为一个类型。它包含了所有类型的特性,新类型具有参与交叉的所有类型的成员。语法为
Type1 & Type2
。
- 联合类型:表示一个值可以是几种类型之一。语法为
Type1 | Type2
。
用法区别
- 交叉类型:常用于需要对象同时满足多个类型约束的场景。当一个对象需要具有多个不同类型的属性或方法时使用。
- 联合类型:常用于值可能具有多种类型的情况,比如函数参数可能接收不同类型的值。
实际应用场景区别
- 交叉类型:例如,一个对象既要满足
User
类型(有 name
属性),又要满足 Admin
类型(有 adminRole
属性),就可以使用交叉类型。
- 联合类型:比如一个函数接收的参数既可以是
string
类型,也可以是 number
类型。
代码示例
交叉类型示例
interface User {
name: string;
}
interface Admin {
adminRole: string;
}
// 交叉类型,一个对象同时具有User和Admin的属性
let userAdmin: User & Admin = {
name: 'John',
adminRole: 'SuperAdmin'
};
联合类型示例
// 联合类型,函数参数可以是string或number
function printValue(value: string | number) {
console.log(value);
}
printValue(10);
printValue('Hello');