Typescript 两种类型的交集

两种类型的交集

type A = { name : string , age : number }
type B = { name : string , age : string , role : string }

求出A,B类型的交集,只有属性名和属性类型完全一致时,被称为交集( 也就是求出 type C = { name : string } )

代码

type A = { name : string , age : number }
type B = { name : string , age : string , role : string }

/** 
取类型 T 与类型 K 的交集,属性名和类型需完全一致
*/
type Instersection<T,K> = Filter<{[M in Extract<keyof T,keyof K>]:Extract<T[M],K[M]>},never>


/** 
从类型 T 中过滤掉属性类型为 K 的属性
*/
type Filter<T extends object,K>=Pick<T, { [M in keyof T]: T[M] extends K  ? never : M}[keyof T]>

使用

Typescript 两种类型的交集_第1张图片

你可能感兴趣的:(TypeScript,js,前端,javascript,typescript)