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]>
使用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值