交叉类型就是将多个类型合并成一个类型。新的类型将具有所有类型的特性。所有交叉类型非常适合对象混入的场景。
    交叉类型:取所有类型的并集

    1. interface Person1 {
    2. handsome: string,
    3. }
    4. interface Person2 {
    5. high: string,
    6. }
    7. type P1P2 = Person1 & Person2;
    8. let p: P1P2 = { handsome: '帅', high: '高' }

    举例:我们提供两拨人,一拨人都很帅、另一拨人很高。我们希望找到他们的交叉部分 => 又高又帅的人

    function mixin<T, K>(a: T, b: K): T & K {
        return { ...a, ...b }
    }
    const x = mixin({ name: 'zf' }, { age: 11 })
    
    interface IPerson1 {
        name:string,
        age:number
    }
    
    interface IPerson2 {
        name:number
        age:number
    }
    type person = IPerson1 & IPerson2
    let name!:never
    let person:person = {name,age:11};  // 两个属性之间 string & number的值为never