当前位置: 首页 > news >正文

Omit<T, K> 解释

Omit<T, K> 是 TypeScript 中的一个内置工具类型,用于从现有类型 T 中排除(即忽略或移除)指定的属性 K,并生成一个新的类型。

当你有一个对象类型 T 并希望创建一个新的类型,该类型与 T 相同但没有某些特定的属性时,Omit<T, K> 就非常有用。

Omit<T, K>
  • T 是你想要从中排除某些属性的原始类型。
  • K 是你想要从 T 中排除的一个或多个属性的联合类型。

示例

假设我们有一个 Todo 接口定义如下:

interface Todo {title: string;description: string;completed: boolean;
}

如果我们想创建一个新的类型 TodoPreview,它与 Todo 类似,但是没有 description 和 title 属性,我们可以使用 Omit 如下:

type TodoPreview = Omit<Todo, 'description' | 'title'>;

现在 TodoPreview 的类型定义如下:

type TodoPreview = {completed: boolean;
}

详细解释

Omit<T, K> 的内部实现大致是这样的:

  1. 使用 keyof T 获取类型 T 的所有属性。
  2. 使用 Exclude<keyof T, K> 排除掉不需要的属性 K
  3. 使用 Pick<T, Exclude<keyof T, K>> 选择剩下的属性来创建新类型。

内部实现示例

如果你需要手动实现 Omit,可以这样做:

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

这里,Exclude<keyof T, K> 生成除了 K 以外的所有属性的联合类型,然后 Pick<T, ...> 用来选择这些属性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【电子数据取证】支持最新版微信、企业微信、钉钉等重点应用数据提取分析!
  • 网络安全知识讲解
  • C语言典型例题30
  • Vue 3 中,组件间传值有多种方式
  • 【知识】pytorch中的pinned memory和pageable memory
  • Android Fragment:详解,结合真实开发场景Navigation
  • Java开发笔记--通用基础数据校验的设计
  • 思科CCIE最新考证流程
  • 工业三防平板助力MES系统打造工厂移动式生产管理
  • 视频编辑与制作软件哪个好 会声会影视频制作教程 会声会影软件下载免费中文版
  • 结构开发笔记(二):solidworks软件(一):介绍、下载和安装过程
  • JVM内存模型笔记
  • Print 前端打印 (调用 windows 自带打印功能,打印指定 dom 元素内容)
  • 【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记
  • 3.OpenFeign与负载均衡
  • ----------
  • avalon2.2的VM生成过程
  • CSS 专业技巧
  • CSS中外联样式表代表的含义
  • css属性的继承、初识值、计算值、当前值、应用值
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript设计模式之工厂模式
  • jquery cookie
  • Linux后台研发超实用命令总结
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • session共享问题解决方案
  • tweak 支持第三方库
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue实战(四)登录/注册页的实现
  • vue中实现单选
  • win10下安装mysql5.7
  • 从重复到重用
  • 给新手的新浪微博 SDK 集成教程【一】
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 七牛云假注销小指南
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端自动化解决方案
  • 全栈开发——Linux
  • 微信小程序填坑清单
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序button引导用户授权
  • 源码安装memcached和php memcache扩展
  • 怎么把视频里的音乐提取出来
  • 怎么将电脑中的声音录制成WAV格式
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 进程与线程(三)——进程/线程间通信
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • (04)odoo视图操作
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (13)Hive调优——动态分区导致的小文件问题
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (zt)最盛行的警世狂言(爆笑)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • .NET : 在VS2008中计算代码度量值