TypeScript 10 交叉类型(高级)

74 阅读1分钟

1 . 交叉类型 :

类似于接口继承 ,用于组合多个类型为一个类型(常用于对象类型)

interface Person { name : string }
interface Contact { phone : string }
type Mix = Person & Contact 
let obj : Mix = {
 name : ' 翔哥 '
 phone : ' 6208 '
 }

2 . 交叉类型和接口继承的对比

2 . 1 相同点 :

都可以实现对象类型的组合

2 . 2 不同点 :

组合时 ,遇到同名属性之间类型有冲突时 ,处理方式不同 。

  • 接口继承会直接报错
  • 而交叉类型不会 ,它会把属性类型改成两个的联合类型
interface A {
    fn : (value : string) => string
}

interface B {
    fn : (value : number) => string
}

type C = A & B

// 则 C 相当于 
{ fn : (value : string | number ) => string }