基本使用方法

功能类似于接口继承,用于组合多个类型为一个类型

  1. interface Person {name:string}
  2. interface Contact {phone:string}
  3. type personDetail = Person & Contact
  4. let obj: PersonDetail = {
  5. name:'jack'
  6. phone:'123'
  7. }

使用交叉类型后,新的PersonDetail具有了Person和Contact的所有属性
相当于

  1. type PersonDetail = {name:string;phone:string}

交叉类型与接口继承的联系与区别

相同点:都可以实现对象类型的组合

不同点:两种方式实现类型聚合时,对于同名属性之间,处理冲突的方式不同

  1. //对于接口继承
  2. interface A {
  3. fn: (value:number)=>string
  4. }
  5. //interface B extends A{ /*报错:类型不兼容*/
  6. // fn: (value:string)=>string
  7. //}
  8. //对于交叉类型
  9. interface A {
  10. fn: (value:number)=>string
  11. }
  12. interface B extends A{
  13. fn: (value:string)=>string
  14. }
  15. type C = A & B
  16. //相当于吧fn变为fn:(value: string|number) => string