获取两个接口类型中的差值属性
type Foo = {
a: string;
b: number;
}
type Bar = {
a: string;
c: boolean
}
type Result1 = Diff<Foo, Bar> // { b: number, c: boolean }
type Result2 = Diff<Bar, Foo> // { b: number, c: boolean }
答案
// 答案 1 type Diff<O, O1> = Omit<O & O1, keyof (O | O1)> // 答案 2 type Diff<O, O1> = { [K in keyof (O & O1) as K extends keyof (O | O1) ? never : K]: (O1 & O)[K] }