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]
  }>
相关推荐
Ulyanov4 分钟前
基于Impress.js的3D概念地图设计与实现
开发语言·前端·javascript·3d·ecmascript
jiayong235 分钟前
Vue 3 面试题 - TypeScript 与工程化
前端·vue.js·typescript
小白菜学前端8 分钟前
Git 推送 Vue 项目到远程仓库完整流程
前端·git
A南方故人9 分钟前
一个用于实时检测 web 应用更新的 JavaScript 库
开发语言·前端·javascript
JosieBook10 分钟前
【WinForm】使用C# WinForm实现带有托盘图标功能的应用程序
开发语言·c#
悟能不能悟10 分钟前
postman怎么获取上一个接口执行完后的参数
前端·javascript·postman
小程故事多_8011 分钟前
穿透 AI 智能面纱:三大高危漏洞(RCE/SSRF/XSS)的攻防博弈与全生命周期防护
前端·人工智能·aigc·xss
2301_7903009612 分钟前
C++与量子计算模拟
开发语言·c++·算法
koiy.cc13 分钟前
新建 vue3 项目
前端·vue.js
虹科网络安全15 分钟前
艾体宝新闻 | NPM 生态系统陷入困境:自我传播恶意软件在大规模供应链攻击中感染了 187 个软件包
前端·npm·node.js