ts:交集类型 交叉类型

除联合类型的交集是取共同的部分外,其他类型的交集是取所有

c 复制代码
  type TypeA = { a: string; b: number; };  
  type TypeB = { b: number; c: boolean; };  
  type IntersectionType = TypeA & TypeB; // { a: string; b: number; c: boolean; }
  
  type test2 = ('1' | '2') & ('1' | '3')

如果编辑器没有简化交叉类型可以自己处理下

c 复制代码
interface User {
    name: string
    age: number
    address: string
  }
  
  type UserPartialName = PartialByKeys<User, 'name'>
  type PartialByKeys<T, K> = {
    [P in keyof T as P extends K ? P : never]?: T[P]
  } & {
    [P in Exclude<keyof T, K>]: T[P]
  }
	此时UserPartialName 显示
	// type UserPartialName = {
	//   name?: string | undefined;
	// } & {
	//   age: number;
	//   address: string;
	// } 

可以人为处理下

c 复制代码
type IntersectionToObj<T> = {
    [K in keyof T]: T[K]
  }
  type PartialByKeys<T , K = any> = IntersectionToObj<{
    [P in keyof T as P extends K ? P : never]?: T[P]
  } & {
    [P in Exclude<keyof T, K>]: T[P]
  }>
相关推荐
花花鱼1 分钟前
vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法
前端·javascript·elementui
k09335 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯13 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue15 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧17 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
EricWang135826 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning26 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
测试界的酸菜鱼28 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
web行路人36 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
番茄小酱00137 分钟前
Expo|ReactNative 中实现扫描二维码功能
javascript·react native·react.js