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 分钟前
Unity3D与Three.js构建3D可视化模型技术对比分析
开发语言·javascript·3d
时间的情敌1 分钟前
Vue3+CSS 实现3D卡片动画
前端·css·3d
吃饺子不吃馅8 分钟前
Canvas 如何渲染富文本、图片、SVG 及其 Path 路径?
前端·svg·canvas
王六岁15 分钟前
🐍 前端开发 0 基础学 Python 入门指南:f-strings 篇
前端·javascript·python
一道雷20 分钟前
🚀 Vue Router 插件系统:让路由扩展变得简单优雅
前端·javascript·vue.js
辣辣y21 分钟前
Tailwind CSS 使用指南
前端·css
cherryc_25 分钟前
JavaSE基础——第十二章 集合
java·开发语言
wgb040930 分钟前
vxe table 升级之后页面数据不显示解决方法
java·前端·javascript
集成显卡35 分钟前
Bun.js + Elysia 框架实现基于 SQLITE3 的简单 CURD 后端服务
开发语言·javascript·sqlite·bun.js