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

TS内置类型总结

  1. typeof 取对象身上的类型

    const person = {name: '',job: '',age:18
    }
    type p = typeof person
    ->>
    type p = {name: string;job: string;age: number;
    }
    
  2. keyof取一个类型的属性明作为一个联合类型

    1. const person = {name: '',job: '',age: 18
      }
      type p = typeof person
      type k = keyof p 
      --》》
      type k = "name" | "job" | "age"
      
  3. Partial将传入的泛型中每个属性都变成可选属性

    1. 源码
      type Par<T> = {[P in keyof T]?:T[P]
      }interface person  {name: string,job: string,age: number
      }
      type a = Partial<person>
      -》》
      type a = {name?: string | undefined;job?: string | undefined;age?: number | undefined;
      }
      
  4. Pick在传入泛型T中筛选出指定属性K的类型

    1. 源码
      type Pick<T,K extends keyof T> = {[P in K]:T[P]
      }interface person {name: string,job: string,age: number
      }
      type pick = Pick<person, 'age'>
      ——》》
      interface person {name: string,job: string,age: number
      }
      
  5. Record将泛型K作为属性名(K可是联合类型) T作为属性类型

    1. type Record<K extends keyof any,T> = {[P in K]:T
      }
      keyof any = ->>> string | number | symbolinterface person {name: string,job: string,age: number
      }
      type human = 'name' | 'job'
      type record = Record<human, person>
      type record = {name: person;job: person;
      }
      
  6. Readonly将传入的泛型全部属性变成只读

    1. type Readonly<T> = {readonly [P in keyof T]:T[P]
      }interface person {name: string,job: string,age: number
      }
      type readonly = Readonly<person>
      --->
      type readonly = {readonly name: string;readonly job: string;readonly age: number;
      }
      
  7. infer:如果传入泛型T是数组类型就取数组元素的类型否则传入什么类型返回什么类型

    1. type TYPE<T> = T extends Array<infer U> ? U : T
      type t = TYPE<(number|string)[]>
      
http://www.lryc.cn/news/66075.html

相关文章:

  • Spring Cloud Alibaba: Gateway 网关过滤器 GatewayGatewayFilter factory (记录)
  • Windows Server 2016版本说明
  • 车载红外夜视「升温」
  • ext3 文件系统的特点、优缺点以及使用场景
  • rk3568 修改开机logo
  • golang实现关键路径算法
  • Overcoming catastrophic forgetting in neural networks
  • [Linux] Linux文件系统
  • 有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定
  • 【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch
  • 自动化测试工具的基本原理以及应用场景
  • 《Java虚拟机学习》 java代码的运行过程
  • 关于Intel处理器架构中AVX2里Gather特性的说明
  • UNIX常用命令(C站最全,一文通关)
  • Vue监听属性详细讲解
  • 网申形式一览:这三种投递方式,你了解吗?
  • vue项目将多张图片生成一个gif动图
  • 开心档之Go 语言常量
  • 动态库和静态库的使用
  • 前端:20 个常见的前端算法题
  • 【Linux】多线程 --- 线程概念 控制 封装
  • 最长递增子序列的长度 _ 贪心+二分查找 _ 20230510
  • VMware ESXi 7.0 U3m Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
  • Scrum敏捷开发和项目管理流程及工具
  • 微服务之配置中心
  • windows下安装OpenCL
  • 前端项目的通用优化策略
  • 关于 IO、存储、硬盘和文件系统
  • 计算机网络期中复习提纲-酷酷的聪整理版
  • clickhouse的嵌套数据结构Tuple、Array与Nested类型介绍和使用示例