假设我们有两个接口First
和Second
:
interface First {
a: string;
b: number;
}
interface Second {
b: number;
c: Date;
}
使用交集可以合并两个接口:
type FirstSecond = First & Second // {a: string, b: number, c: Date}
但是可以进行内部联接,因此生成的接口仅由在两个接口中声明的属性组成:< / p>
type FirstSecond = First /*inner join here*/ Second // {b: number}
这对于泛型类型尤其有用。
答案 0 :(得分:5)
您可以使用Pick
从相交处获取公共属性。要获取公共属性,可以使用Extract
条件类型来过滤一种类型的键和另一种类型的键:
interface First {
a: string;
b: number;
}
interface Second {
b: number;
c: Date;
}
type IntersectByProperties<T, U> = Pick<T & U, Extract<keyof T, keyof U>>
type R = IntersectByProperties<First, Second>