交叉类型

又是TS的一个骚操作。他可以把多个类或接口,合并他们的所有属性和方法为一个新的类型:

interface PersonA{
  name: string;
}

interface PersonB{
  age: number;
  sayHi(): void;
}

type Person = PersonA & PersonB;

let person: Person = {
  name: "John",
  age: 18,
  sayHi(): void {

  }
}