首页 > 解决方案 > 如何从两种类型中选择共同的属性?

问题描述

我想通过仅选择两种类型中都存在的成员来创建类型:

interface A {
    X: number;
    Y: number;
}
interface B {
    Y: number;
    Z: number;
}

type C = Common<A, B>; // { Y: number; }

是否有内置的实用程序类型、命题或常用模式来实现这一目标?

注意:我能够编写以下实用程序类型,但我认为很难推理

type Common<T1, T2> = Omit<T1, keyof Omit<T1, keyof T2>>

然而,有没有什么

标签: typescripttypescript-generics

解决方案


You may find this easier to read:

type C = Pick<A | B, keyof A & keyof B>; // { Y: number; }

It picks (Pick) common properties (keyof A & keyof B) from the sum of A and B (A | B).


推荐阅读