TypeScript工具类型之omit

TypeScript泛型工具实战:从Partial到Omit的类型体操 本文深入探讨TypeScript泛型工具的实际应用,从Partial到Omit的类型操作技巧。通过具体示例展示如何利用这些工具简化开发流程,提升类型安全性,特别适合处理表单数据、API交互等常见场景。掌握这些类型体操技巧能显著提高TypeScript开发效率。 阅读详情

在 TypeScript 类型系统中,工具类型为我们提供了强大的类型操作能力。其中,Omit 是一个实用的工具类型,它从一个对象类型中“剔除”某些属性,从而生成一个新的类型。
定义如下:

//从类型 T 中移除键为 K 的属性,返回一个新类型
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>

示例

interface User {
  id: number;
  name: string;
  email: string;
  password: string;
}

// 剔除敏感字段 password
type PublicUser = Omit<User,password>;

// 等价于:
// type PublicUser = {
//   id: number;
//   name: string;
//   email: string;
// };

Omit 的实现:

要理解 Omit,需要先了解两个基础工具类型:Pick 和 Exclude。

  1. Exclude<T,U>
    从联合类型 T 中排除所有可赋值给 U 的类型。
type A = Exclude<'a' | 'b' | 'c', 'b'>; // 'a' | 'c'
  1. Pick
    从类型 T 中挑选出键为 K 的属性。
type B = Pick<{ a: 1; b: 2; c: 3 }, 'a' | 'c'>; // { a: 1; c: 3 }

Omit 的实现方式是:

获取 T 的所有键:keyof T
从中排除掉 K:Exclude<keyof T, K>
用剩下的键从 T 中挑选属性:Pick<T, ...>

因此:

type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

如果使用非内置工具类型自定义实现 MyOmit,方式如下:

type MyOmit<T, K extends keyof T> = {
    [P in keyof T as P extends K ? never:P]: T[P]
}
type OmitData = MyOmit<{a:1,b:2}, 'a'>
//OmitData等价于
type OmitData = {
    b: 2;
}

总结:
Omit 是 TypeScript 类型编程中的利器,它通过组合 Pick 和 Exclude 实现了属性剔除。理解其内部机制不仅能帮助我们更高效地使用它,还能启发我们构建更复杂的自定义工具类型。

TypeScript Omit 工具类型深度解析:原理、实战与避坑指南 在 TypeScript 类型系统中,工具类型提供了对已有类型的灵活变换能力,其中 Omit 用于从对象类型中移除指定属性,是实际开发中使用频率极高的类型工具。理解其底层实现(基于 Pick 与 Exclude 的组合)不仅有助于正确使用,还能避免在联合类型、嵌套对象等场景中的“翻车”问题。Omit 广泛应用于接口返回值脱敏、表单入参收窄、组件 Props 派生等场景,可与 Partial、Required、Readonly 等组合实现复杂类型约束。然而,Omit 也有无法重命名字段、不识别索引签名等局限。 阅读详情

相关推荐

TypeScript 泛型工具源码解析:从Partial到Omit的5个映射类型实现

本文深入解析TypeScript泛型工具类型的实现原理,从Partial到Omit的5个核心映射类型源码剖析。通过详细代码示例展示如何利用泛型工具进行类型操作,包括属性可选化、必填约束、精准裁剪等高级技巧,帮助开发者掌握类型系统的高阶应用,提升代码类型安全性和可维护性。

weixin_33965305的博客 376

ts(TypeScript)常用语法(Omit、Pick、Partial、Required)

ts(TypeScript)常用语法 比如有一个联系人列表 export interface Contact{ name: string; // 姓名 phone?: string; // 手机号 email?: string; // 邮箱 avatar: string; // 头像 userid: string; // id } 1.去除类型中某些项(官方提供) 现在需要定义一个新的数据类型,新的联系人列表没有邮箱项 可以使用Omit,其源码如下 /** * Construct a

jojo1001的博客 3万+

python——模拟砍价

类型:随机数。

m0_62488776的博客 1971

写TS效率大提升,TS常用内置工具类Omit、Pick、Partial、Required、Readonly、Exclude 、Extract、ReturnType、NonNullable

TS中常用的工具映射类型,让写TS时效率大大提升,避免无意义的重复性定义。 1.Omit 省略/剔除 顾名思义 可以剔除 已定义对象中 自己不需要的一部分形成新的定义类型。 interface UserObj { readonly name: string; // readonly 只读属性 只能初始化定义 不能二次赋值 age: number; id: number; sex: 0 | 1; address: string; weight: number;

天渺(喵)工作室 6802

从逻辑门到存储阵列:NAND与NOR闪存命名与结构原理详解

在数字电路与半导体存储器领域,逻辑门是构建一切复杂功能的基础单元,其输入输出关系定义了计算与存储的基本原理。与非门(NAND)和或非门(NOR)作为通用逻辑门,其真值表和行为模式深刻影响了芯片设计。基于这些原理,现代闪存技术发展出了两种核心架构:NAND Flash和NOR Flash。这两种闪存的命名直接源于其内部存储单元阵列的连接方式,分别模拟了与非门和或非门的逻辑关系。这种结构差异决定了它们根本的技术价值:NOR Flash采用并联结构,支持快速随机读取,适用于代码存储与原地执行(XiP);而NAND

weixin_33377602的博客 342

【论文复现】自动化细胞核分割与特征分析

HoVer-Net是一种精心设计的多分支深度学习网络架构,专为处理复杂的多组织显微图像中的细胞核实例分割与精确分类任务而开发。该网络通过创新的策略,不仅有效解决了细胞核在密集聚集区域难以准确区分的问题,还实现了对每个独立细胞核类型的细致分类。此外,HoVer-Net还引入了专门的上采样分支,这一设计旨在对每个成功分割出的细胞核实例进行进一步的核类型分类。这一分支利用高级语义信息,结合精心设计的分类策略,能够准确判断每个细胞核的所属类型,为医学研究提供了宝贵的细胞水平信息。

2201_75366661的博客 1978

ts 中 Omit 作用

在定义函数的参数类型时,可以使用`Omit`来排除一些不相关的属性,使参数类型更加简洁和明确。// 更新人员信息,不包括性别属性。

weixin_64684095的博客 1040

从工艺到器件:用Silvaco ATLAS仿真PIN二极管击穿电压的保姆级指南

本文详细介绍了使用Silvaco ATLAS仿真PIN二极管击穿电压的全流程指南,从工艺仿真基础搭建到器件结构构建,再到击穿特性仿真和结果分析。通过Silvaco工具链,工程师可以在设计阶段精准预测器件性能,优化击穿电压,提升研发效率。

weixin_34259816的博客 355

TS学习笔记:Omit减少重复的类型定义

恰巧在B站刷短视频,看到了这个教程。想了想还是蛮有用的,记录一下假设现在要从服务器获取用户信息,需要定义一个 User 类型,也许会这样来进行处理: 这里面的 id、createAt 和 updateAt 都是创建用户时由服务端产生的。因此,在注册用户时不需要前端传递这些属性,而只需要传 name 和 password 即可: 那么问题来了,要怎么高效复用已定义好的 User 类型,来产生一个 RegisterUser 呢?Omit为了解决前面场景里提到的问题,可以使用TypeScript 内置的工具类型

dongnihao的博客 1844

大数据领域数据建模的多源数据融合技术

在大数据时代,数据来源呈现出多样化的特点,包括企业内部的不同业务系统数据、外部的社交媒体数据、传感器数据等。这些多源数据蕴含着丰富的信息,但由于数据格式、语义、质量等方面的差异,难以直接进行分析和利用。多源数据融合技术的目的就是将这些来自不同数据源的数据进行整合、清洗、关联和统一,构建一个具有一致性和完整性的数据模型,以便更好地挖掘数据背后的价值,为企业决策、科学研究等提供有力支持。

Java大师兄的博客 1305

YOLO11涨点优化:小目标检测 | 多头检测器提升小目标检测精度

引入多头检测器助力YOLO11,添加一个微小物体的检测头暴力提升小目标检测性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4742

TypeScript 中的 Omit 工具类型:简介与实用技巧

在 TypeScript 开发中,我们经常需要基于现有类型创建新的类型。有时,我们希望新类型继承原类型的大部分属性,但排除掉其中一小部分。`Omit<Type, Keys>` 工具类型正是为此而生,它提供了一种简洁、类型安全的方式来实现这一需求。本文将带你了解 `Omit` 的基本用法和一些实用技巧

专注大前端与服务器端实战技巧,分享日常开发中的高效工具链、组件设计心得与全栈调试手记。每周更新原创教程,用一杯茶的时间解锁可落地的编程知识,让技术沉淀如茶香自然醇厚。 1174

华为OD机试真题2026双机位C卷 C语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 172

TypeScript内置工具类型深度解析:Pick、Omit、Record、Exclude、Extract

TypeScript的内置工具类型代表了类型系统的设计智慧。

老前端的功夫 2515

YOLO11 改进系列 | 引入2023年 MLCA 的 C3k2_MLCA 模块,近零参数开销的本地-全局通道注意力,适合检测与分割特征增强

本文提出将MLCA(混合局部通道注意力)模块嵌入YOLOv11的C3k2框架中,形成C3k2_MLCA改进结构。该模块通过5×5局部池化和1×1全局池化双路融合,结合ECA式Conv1d生成通道注意力,在几乎不增加参数量的前提下(仅增加66个参数),实现了局部空间信息与全局通道统计的联合建模。相比传统SE和ECA注意力,MLCA保留了空间分布信息,更适合实例分割等需要精细定位的任务。实验表明改进后模型参数量仅增加0.002%,计算量基本不变,是一种高效的注意力增强方案。

qq_44224801的博客 93

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TypeScript 内置工具类型大全(ReturnType、Omit、Pick 等)

TypeScript 提供了一些内置的泛型类型,用来简化常见的类型操作,我们称之为工具类型(Utility Types)。它们大多数基于条件类型infer和映射类型实现,可以帮助我们减少样板代码,让类型定义更灵活。工具类型大幅减少了重复类型定义,让代码更简洁。修饰:Partial、Required、Readonly挑选:Pick、Omit、Record函数:ReturnType、Parameters 等建议结合业务场景学习,比如API 类型推导组件 Props 约束权限映射表。

nihao20190的博客 1116

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android JUnit 测试报告实战:三步生成 HTML 测试报告

你提交完代码打开 CI 页面,绿色勾还没出来,有人问"测试怎么样",你只能翻控制台日志。本文以 awesome-android 资源列表为背景,带你走通 Android 测试报告全流程:JUnit 跑单元测试,Gradle 自动生成 HTML 测试报告,给你一套可直接落地的配置。 [![Awesome Android 资源列表横幅:收录 JUnit、Robolectric 等 Android 测

gitblog_00713的博客 405

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

三列布局与 TypeScript 工具类型 Pick / Omit / Partial 详解

左右两列固定宽度,中间一列自适应撑满剩余空间。

suger__salt的博客 331

typescript常用工具类型Pick,Omit,Partial

的属性键),剩余属性组成新的类型。),通常用于 “部分更新” 场景。的所有属性变为可选属性(添加。的属性键),组成新的类型。中,挑选出指定的属性。

xiao1215fei的专栏 253

TypeScript 实用工具类型之 Omit 类型

在本文中,我们将讨论 TypeScript 中使用 `Omit` 的对象类型转换。这是 TypeScript 实用工具类型系列的第二部分。

p1967914901的博客 4086

TypeScript 工具类型怎么记:从 Pick、Omit 到 keyof 与 Exclude 推导

学习 TypeScript 时,很多人能背出PickOmitPartial,遇到组合题却仍会把“保留”和“删除”写反。关键不是继续背定义,而是先判断工具类型的。本文用一个User类型串起常见工具类型,并重点推导如何构成Omit。本文根据现有 TypeScript 学习代码进行静态分析,代码编译运行未验证。

2501_93234401的博客 366

TypeScript 中,Pick 和 Omit 是两个非常常用且强大的内置工具类型(Utility Types)

TypeScript中的Pick和Omit是两个常用工具类型,用于从现有类型中选取或排除属性。Pick通过"白名单"机制选取指定属性(如从User类型中只选id和name),适用于提取少量字段的场景。Omit则通过"黑名单"机制排除指定属性(如从User中剔除id和createdAt),适用于复用大部分字段的情况。两者配合能有效减少重复类型定义,保持代码DRY原则,常见于API响应分层、表单验证等场景,通过类型运算实现数据的精确控制。

木木的学习笔记 354

TypeScript 工具类型全解:Partial、Pick、Omit、Record 实战避坑

TypeScript 高级类型中的工具类型,本质是基于映射类型与条件类型对已有类型做派生,例如 Partial 调整可选性、Omit 与 Pick 筛选属性、Record 生成键值映射、Exclude 与 Extract 处理联合类型。其原理是通过 keyof、in、extends 和分发条件类型,在编译期完成类型变换。技术价值在于建立单一事实来源,让接口变更自动传播到副本,减少手写 interface 与字段同步遗漏。常用于前端表单、接口响应归一化、组件 props、缓存结构与状态机等场景。理解 Part

weixin_34319817的博客 391

TypeScript Omit工具类型详解:从原理到实战的类型裁剪指南

TypeScript作为前端开发的核心语言,提供了一套丰富的内置工具类型,用于简化类型定义与派生。Omit作为其中最常用的类型工具之一,能够从一个对象类型中剔除指定属性,进而生成新的类型,常与Pick、Partial等工具搭配使用,构成类型体操的基础操作。其底层依赖keyof索引查询与条件类型Exclude,通过映射类型实现属性的精确裁剪与键集合运算。在实际工程中,Omit被广泛应用于接口响应脱敏、表单模型派生、组件Props约束等场景,有效减少重复类型定义并提升代码可维护性。本文深入解析Omit的源码原理

weixin_29284201的博客 235

TypeScript工具类型:Pick/Omit/Partial 减少重复定义

在 TypeScript 类型系统中,泛型、keyof 与映射类型让类型本身也能被编程。工具类型如 Partial、Pick、Omit、Record 本质是类型层面的函数:输入已有类型,输出变形结果。其核心价值在于建立单一数据源,减少重复 interface 维护成本,并让字段变更在编译期暴露问题。前端后台管理、API 接口层、表单与列表/详情等场景,同一份用户数据常需要不同视图,通过 Pick、Omit、Partial 组合即可派生列表项、创建参数、更新参数等类型,避免手写多份定义。围绕这些 TypeSc

weixin_34174322的博客 300

TypeScript类型体操:Omit工具类型实现与应用

类型编程是现代TypeScript开发的核心能力之一,其中工具类型是实现类型复用的关键技术。Omit作为TS内置工具类型,通过属性排除机制帮助开发者高效处理复杂类型。其核心原理结合了联合类型操作和映射类型,使用keyof获取对象属性集合,通过Exclude或条件类型实现属性过滤。这种类型操作在API响应处理、组件属性继承等场景具有重要工程价值,能有效解决敏感字段移除、属性覆盖等实际问题。从性能角度看,官方Omit实现经过深度优化,而自定义实现时需要注意as子句和条件类型的选择。掌握Omit类型体操不仅提升类

weixin_30219613的博客 202
上一篇: JavaScript内存回收机制
下一篇: Vue3 响应式之reactive:深入理解 Proxy代理
Zhencode
博客等级 码龄7年 106粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值