ts常用语法笔记(Omit,Pick,Partial,Required)
1.Omit【某个类型中去除某些项后的新的数据类型】
-需要两个参数:Omit<type, string>,第一个参数为要继承的type类型,第二个参数为想要去除的key的字符串,存在多个时用|分隔
1 2 | 源码: type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>> |
e.g.
export type AsyncButtonConfirmProps = Omit<PopconfirmProps, 'children' | 'onConfirm'>;
即为PopconfirmProps中去除children、onConfirm这两个项后剩余的项,构造成AsyncButtonConfirmProps 这个新的数据类型
-----------------------------------------------------------------------------------
2.Pick【某个类型中选取一组指定属性,构造成新的数据类型】
-两个参数:Pick<type, string>,第一个参数为被选取的类型,第二个参数为选取的属性,存在多个时用|分隔
1 2 3 4 | 源码: type Pick<T, K extends keyof T> = { [P in K]: T[P]; } |
e.g.
export type AsyncButtonConfirmProps = Pick<PopconfirmProps, 'children' | 'onConfirm'>;
即为PopconfirmProps中选取children、onConfirm这两个项,构造成AsyncButtonConfirmProps 这个新的数据类型。此时AsyncButtonConfirmProps 的属性为{children: children的类型;onConfirm:onConfirm的类型;}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
3.Partial【将类型中所有的项都调整为可选属性(即加上?)】
-Partial<type>,一个参数,为要调整的类型
1 2 3 4 | 源码: type Partial<T> = { [P in keyof T]?: T[P]; } |
e.g.
export interface Type = {
name: string;
}
export interface PartialType = Partial<Type>;
即PartialType 的属性为Type的属性全部变为了可选,如下:
PartialType = {
name?: string;
}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
4.Required【将类型中所有的项都调整为必选属性(即去掉?)】
-Required<type>,一个参数,为要调整的类型
1 2 3 4 | 源码: type Required<T> = { [P in keyof T]-?: T[P]; } |
e.g.
export interface Type = {
name?: string;
}
export interface RequiredType = Partial<Type>;
即RequiredType 的属性为Type的属性全部变为了必选,如下:
RequiredType = {
name: string;
}
----------------------------------------------------------------------------------
5.数据类型加指定的类型
-export type AddId<T, P = string> = T & {id: P};
e.g.
export interface TypeAddId = AddId<Type>
即给Type加上了AddId的项,构成新的数据类型
分类:
杂七杂八
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具