继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第3天 TypeScript学习 9-26章

暮雩
关注TA
已关注
手记 65
粉丝 10
获赞 5

课程名称: 晋级TypeScript高手,成为抢手的前端开发人才

课程章节: 9-26 【高级类型 Omit] 分解掌握Omit

课程讲师: keviny79

课程内容:
本章节主要讲解 TypeScript高级类型Omit

Omit

Omit 反向抓取属性数据,剔除不需要的属性,保留需要的属性。
Omit 使用 两个 Ts高级类型 Pick 和 Exclude

语法:

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

解析:

  1. Exclude<keyof T, K> ,K的联合类型 有在 T联合类型 中出现就剔除,保留没有在 K 中出现的类型,如下
    // 传递联合类型
    type Exclude<T, K> = T extends K ? never : T
    type ListType = {
    	name: string,
    	age: number,
    	list: Array<string>,
    	size: number
    }
    // keyof ListType 提取 ListType的key值,变为联合类型
    // "name" | "age" | "list" | "size"
    // 剔除 提取后的联合类型 中的 "name" | "list" 
    // 结果一个联合类型 "age" | "size"
    type test = Exclude<keyof ListType, "name" | "list">
    
  2. Pick<T, Exclude<keyof T, K>>,抓取 T 对象类型中 Exclude 返回的联合类型,如:
    // 这里为了直观对Pick和Exclude进行分离
    type Exclude<T, K> = T extends K ? never : T
    
    type Pick<T, K> = {
    	[P in keyof K]: T[P]
    }
    
    type ListType = {
    	name: string,
    	age: number,
    	list: Array<string>,
    	size: number
    }
    // 1. 剔除 ListType 中 list 和 age
    // 得到 "name" | "size" | "age" 联合类型
    type ExcludeType = Exclude<keyof ListType, "list">
    
    // 2. 抓取 ListType 中 "name"、"size" 后组合新的对象类型
    // 得到{name: string,size: number, age: number,}
    type PickType = Pick<ListType, ExcludeType>
    
  3. 最后看type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>,就可以清楚的明白 T表示传递的对象类型,K表示传递必须是T对象中属性。返回对象,对象中的属性就是剔除了 T 中有 K 的属性。列:
    type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
    
    type ListType = {
    	name: string,
    	age: number,
    	list: Array<string>,
    	size: number
    }
    // 不需要 ListType 中 list 变量,就可以这样做
    // {
    // name: string;
    // age: number;
    // size: number;
    // }
    type OmitListType = Omit<ListType, "list">
    

使用场景:
用于一个对象属性中有很多属性,但需要去掉其中两三个不用的,有不想再声明一个类型,一个一个再添加需要的对象属性时,就可以使用Omit。

课程收获:
本节了解了 Omit 高级类型是 Pick 和 Exclude 的组合使用,对Pick 和 Exclude 有了更深刻的理解

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP