首页 > 其他分享 >ts常用语法笔记(Omit,Pick,Partial,Required)

ts常用语法笔记(Omit,Pick,Partial,Required)

时间:2023-05-23 16:33:18浏览次数:44  
标签:Required Partial Omit 数据类型 export Pick type

1.Omit【某个类型中去除某些项后的新的数据类型】

-需要两个参数:Omit<type, string>,第一个参数为要继承的type类型,第二个参数为想要去除的key的字符串,存在多个时用|分隔

源码:
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>,第一个参数为被选取的类型,第二个参数为选取的属性,存在多个时用|分隔
源码:
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>,一个参数,为要调整的类型
源码:
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>,一个参数,为要调整的类型  
源码:
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的项,构成新的数据类型    

标签:Required,Partial,Omit,数据类型,export,Pick,type
From: https://www.cnblogs.com/nangras/p/17425610.html

相关文章

  • Field userClient in com.demo.order.service.OrderService required a bean of type'
    在SpringCloud项目中使用Feign进行远程调用遇到的错误。原因是因为UserClient在com.demo.feign.clients包下面,而order-service的@EnableFeignClientd注解却在com.demo.order包下面,这两个不在同一个包下,无法扫描到UserClient。解决方法有两种1.指定Feign应该扫描的包@EnableFeig......
  • TS高级类型 Record、Pick、Partial、Required、Readonly、Exclude、Extract、Omit、No
    keyof获取类型内所有的key,即所有属性名,获取的是一个联合类型这里类型指:通过interface或type定义的类型;通过typeofxxx返回的类型等。keyof后面必须是类型,不能是具体的对象interfaceIPeople{name:string,age?:number,sex:string,}ty......
  • 全同态(Fully Homomorphic Encryption, FHE)和半同态(Partially Homomorphic Encryption,
    全同态(FullyHomomorphicEncryption,FHE)和半同态(PartiallyHomomorphicEncryption,PHE)全同态加密(FHE)是指一种加密方案,可以在加密状态下进行任意多次的加法和乘法运算,并且可以得到与明文数据相同的结果。这意味着可以在加密的数据上进行复杂的计算,而无需解密数据。FHE是同态......
  • 什么是 Angular Ivy Partial compilation mode
    compilingwithAngularsourcesinIvypartialcompilationmode.AngularIvypartialcompilationmode是AngularIvy编译器的一种模式,它是为了优化Angular应用程序的性能而引入的。在这种模式下,编译器只会重新编译那些发生变化的部分,而不会重新编译整个应用程序。这种......
  • python:ERROR: Could not build wheels for wordcloud, which is required to install
    pycharm里无法下载,在下面下载出现问题 需要下载error里的文件https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud这个网站找。输入Python,看自己电脑是怎样的 下载文件后,放到对应位置,下载成功 ......
  • Parameter 9 of constructor in com.xxx.impl.xxxServiceImpl required a bean of ty
    1查看Service实现类是否加了@AllArgsConstructor2删除@AllArgsConstructor3给每个要注入的serviceBean加@Resource原因lombok的@AllArgsConstructor注解会代替@Autowired注入,导致某些不需要手动注入的bean重复加了@Autowired......
  • ERROR:Could not build wheels for pycocotools, which is required to install pypro
    在创建了conda虚拟环境后,下载pycocotools包,出现这个错误,终端下载包失败,从网上直接将下载好的pycocotools包导入到,所需要环境(conda环境,本机环境)比如:anaconda\envs\py38\Lib\site-packages下面pycocotools包下载:链接:https://pan.baidu.com/s/1RsV1w0GRXJZ1rR3yPBg5FA提取码:88......
  • Property 'dataSource' is required
    写了一个配置类,启动项目的时候报错:Property'dataSource'isrequired原代码如下:@ConfigurationpublicclassSecurityConfigextendsWebSecurityConfigurerAdapter{@AutowiredprivatePersistentTokenRepositorypersistentTokenRepository;@Autowired......
  • return View() vs returnPartialView()
    returnView()vsreturnPartialView()InASP.NETMVC,bothreturnView()andreturnPartialView()areusedtoreturnaviewresultfromacontrolleractionmethod.returnView()rendersthefullHTMLlayout,includingthelayoutpage,whilereturnParti......
  • @Html.Partial vs @Html.Action
    @Html.Partialand@Html.ActionarebothusedinASP.NETMVCtoincludereusablecontentinaview.@Html.Partialrendersapartialviewdirectly.It'susefulforrenderingsmallandsimpleviews,likeaheaderorfooter.@Html.Actionisusedtorende......