6、深入掌握TS

news/2024/11/8 0:35:06/

infer

表示在extends条件语句中以占位符出现等到使用时才推断出来的数据类型

interface Customer {custname: string,buymoney: number
}
type CustFn = (params:Customer)=> string
type custParaTyp = CustFn extends (params: any) => infer R? R : CustFn// 运用在泛型
type ParamsTyp<T> = T extends (params: any) => infer R ? R :never 
type CustParaTyp = ParamsTyp<CustFn> // stringtype EleOfArr<T> = T extends Array<infer P> ? P :never
type EleOfArrTest = EleOfArr<Array<number>> // number

TS 条件类型

// never 整体比较
type Test = string|number |boolean extends string |number ? string : never // 泛型迭代比较
type CondTyp<T> = T extends string |number ?T:never 
type Test2 = CondTyp<string |number | boolean> // string | number

Extract

// type Extract<T, U> = T extends U ? T : never
type TestExtract1 = Extract<string, string | number> // string
type TestExtract2 = Extract<string |number |boolean, string |number> // string | number 迭代比较

Exclude

// type Exclude<T, U> = T extends U ? never : T
type TextExclude1 = Exclude<string, string | number> // never
type TextExclude2 = Exclude<string | number| boolean, string|number>// boolean

Record


type Record<K extends keyof any, T> = {[P in K]: T;
};type O = Record<string | number | symbol, any>
// key of any -> string | number | symbol
// P in K -> 迭代效果

Pick

抓取type类型,接口,类中的属性组成的一个新的对象类型

type Pick<T, K extends keyof T> = {[P in K]: T[P];
};

TS in 类型(映射类型)

type Omit1<T, K extends keyof T> = {[P in keyof T as P extends K?never:P]:T[P]
}
type Omit2<T, K extends keyof T> = {[P in keyof T as Exclude<P, K>]:T[P]
}

Required

去掉可选属性

type Required<T> = {[P in keyof T]-?: T[P];
};

Partial

全部转成可选属性

type Partial<T> = {[P in keyof T]?: T[P];
};

Readonly

不允许修改属性

type Readonly<T> = {readonly [P in keyof T]: T[P];
};// 去掉只读属性
type Readonly<T> = {- readonly [P in keyof T]: T[P];
};

http://www.ppmy.cn/news/468923.html

相关文章

hp台式计算机u盘启动设置,惠普bios怎么设置u盘启动 惠普bios设置u盘启动方法

惠普笔记本对大家应该非常熟悉吧&#xff0c;使用惠普电脑的人也非常多&#xff0c;因为惠普电脑不仅仅在外形设计上走的是时尚风格&#xff0c;而且在性能和功能上也在进行层层地升级。伴随着笔记本的不断变化&#xff0c;系统当然也要进行升级啦&#xff0c;目前比较流行的就…

惠普omen测试软件,【惠普OMEN15评测】图形跑分与游戏测试-中关村在线

图形跑分与游戏测试 惠普暗影精灵4搭载了GTX1060 6GB独立显卡&#xff0c;就是公版的频率规格&#xff0c;没有太多改动&#xff0c;性能超出想象&#xff0c;跑分很高。 惠普暗影精灵 标准版GTX1060 Time Spy 测试成绩 Firestrike EX 测试成绩 在3DMark 系列测试中&#xff0c…

实验篇(7.2) 12. 站对站安全隧道 - 仅一方发起连接(FortiGate-IPsec) ❀ 远程访问

【简介】上一篇实验发现&#xff0c;两端都是可以远程的公网IP的话&#xff0c;两端防火墙都可以发出连接请求&#xff0c;并且都能够连通。这样的好处是安全隧道不用随时在线&#xff0c;只在有需求时才由发起方进行连接。但是现实中很多情况下只有一端公网IP可以远程&#xf…

photoshop beta正在面临高峰 用不了报错的解决方法

作为一款非常实用的修图软件&#xff0c;photoshop beta是很多正在工作的白领都会使用的&#xff0c;我们可以在其中完成图片的制作&#xff0c;方便又快捷&#xff0c;为大家的工作提供了更多便捷的服务。不过最近也有部分用户在使用这个软件的时候出现了正在面临高峰的报错&a…

环境变量文件配置及执行顺序

环境变量配置文件(Ubuntu16.04) /etc/profile 用于设置系统级的环境变量和启动程序&#xff0c;在这个文件下配置会对所有用户生效。当用户登录(login)时&#xff0c;文件会被执行&#xff0c;并从/etc/profile.d目录的配置文件中查找shell设置。如果对/etc/profile修改的话必须…

汽车电子行业ECU烧录工艺人必须面对的重要课题

在汽车电子行业ECU烧录是很一个关键工序&#xff0c;如何有效地通过对它的过程进行管控是每个工艺人必须面对的重要课题。 为了解决烧录过程管控的问题&#xff0c;我们合共软件针对汽车电子行业研发的HG MES中有专门的烧录模块用于应对这一问题。对ECU烧录管控的核心目标是如…

惠普战66 FN LED灯的开启与关闭和FN按键的禁用

惠普战66 FN LED灯的开启与关闭和FN按键的禁用 其实&#xff0c;两个问题的解决方法是一模一样的&#xff0c;FN 灯的亮就是Fn键的禁用&#xff0c;就可以直接使用f1到f12,比如刷新就直接按f5. 教程如下&#xff1a; 先按住FN 键不放&#xff0c;然后按SHift就ok. 对网上一大堆…

el-form 表单项前面显示星号 但又不校验这一项代码怎么实现

效果图&#xff1a; 1.将 prop 属性设置为空字符串&#xff1b; 2.同时将 required 属性设置为 true。 这样就可以显示星号但不进行校验。 示例代码&#xff1a; <el-form> <el-form-item label"姓名" prop"name" required> <el-input…