# 十一.交叉类型

前言

符号是 & ,代表了类型合并,需要符合这里的所有类型,才可以说实现了这个交叉类型,即 A & B ,需要同时满足 A 与 B 两个类型才行

# 1.案例

  • 1.不同属性
interface Person1 {
  handsome: string;
}
interface Person2 {
  high: string;
}
type P1P2 = Person1 & Person2;
let p: P1P2 = { handsome: "帅", high: "高" };
1
2
3
4
5
6
7
8
  • 2.相同属性

  • 3.属性对象

# 2.实现

function mixin<T, K>(a: T, b: K): T & K {
  return { ...a, ...b };
}
const x = mixin({ name: "abc" }, { age: 11 });
1
2
3
4
interface IPerson1 {
  name: string;
  age: number;
}
interface IPerson2 {
  name: string;
  age: number;
}
type person = IPerson1 & IPerson2;
let name!: never;
let person: person = { name, age: 11 }; //两个属性之间string & number的值为never
1
2
3
4
5
6
7
8
9
10
11