创建多种类型的新型共享属性

问题描述

是否可以从不同类型的共享属性中创建新类型?

示例:

type A = {
  id: number;
  text: string;
  description: string; 
}
   
type B = {
  text: string;
  description: string;
  value: number;
}

我的目标类型应该是这样

type C = {
  text: string;
  description: string;
}

是否有一种方法可以实现而无需手动创建类型?

解决方法

假定具有不同值类型的相同键的结果值类型应为其并集:

type Common<T1,T2> = Pick<T1 | T2,Extract<keyof T1,keyof T2>>

Playground


我们extract公用密钥,然后pick通过两种类型的并集来公用它们。