TS高级 - 交叉类型
交叉类型(Intersection Types)
交叉类型是将多个类型合并为一个类型。 这让我们可以把现有的多种类型「叠加」到一起成为一种类型,它包含了所需的所有类型的特性。
例如, FrontEndEngineer = Name & Age & Skill,FrontEndEngineer同时是 Name 和 Age 和 Skill。 就是说这个类型的对象同时拥有了这三种类型的成员。
js
// 一个简单的 DEMO
type Name = {
name: string;
};
type Age = {
age: number;
};
type Skill = {
canCode(): boolean;
other: number;
}
type FrontEndEngineer = Name & Age & Skill;
function getFrontEndEngineer<T>(user: T): T {
return user;
}
let bob = getFrontEndEngineer<FrontEndEngineer>({
name: 'Bob',
age: 28,
canCode: () => {
return true
},
other: 10
});
console.log(bob); // { name: 'Bob', age: 28, canCode: [Function: canCode], other: 10 }