TS内置类型总结

news/2024/7/5 3:24:12
  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 | symbol
      
      interface 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://lihuaxi.xjx100.cn/news/1103430.html

相关文章

springboot内嵌tomcat文件上传路径不存在问题原因

错误提示: 临时文件目录被删除,导致文件上传报错,我们使用的是linux系统,10天没有使用,就会被删除 代码: 解决办法: 配置文件中自定义临时文件上传目录 server:port: 9090tomcat:basedir: /crm/tmp 特殊情况: 当我上传小文件的时候可以上传成功,大文件的时候上传失败 猜测可…

《ChatGPT Prompt Engineering for Developers》课程-提示词原则

编写 Prompt 的原则 本章的主要内容为编写 Prompt 的原则&#xff0c;在本章中&#xff0c;我们将给出两个编写 Prompt 的原则与一些相关的策略&#xff0c;你将练习基于这两个原则来编写有效的 Prompt&#xff0c;从而便捷而有效地使用 LLM。 一、环境配置 本教程使用 Open…

Mybatis动态SQL用法

动态SQL是Mybatis的一大重要特性&#xff0c;它可以完成不同条件下的SQL拼接&#xff0c;降低了因为SQL语句书写中的小错误而造成程序报错的概率&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号&#xff0c;利用动态SQL就可…

B-Tree B-树 代码介绍-20230505(C语言)

B-Tree B-树 代码介绍-20230505&#xff08;C语言) 前言 前面已经介绍B-树属于多路查找树&#xff0c;它在数据库和文件储存系统设计中有着广泛的应用&#xff0c;B-Tree的基本操作包含查询、插入和删除等基本操作&#xff0c;由于这些操作过程中&#xff0c;B-树必须恪守其基…

信奥一本通1242

1242&#xff1a;网线主管 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 25297 通过数: 6122 【题目描述】 仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成&#xff0c;他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑…

实验一 进程管理与进程同步

实验一 进程管理与进程同步 实验目的&#xff1a; 了解进程管理的实现方法&#xff0c;理解和掌握处理进程同步问题的方法。 实验内容&#xff1a; 实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算法。 实验步骤&#xff1a; 1.银行家算法流程图 &…

pytorch矩阵乘法总结

1. element-wise&#xff08;*&#xff09; 按元素相乘&#xff0c;支持广播&#xff0c;等价于torch.mul() a torch.tensor([[1, 2], [3, 4]]) b torch.tensor([[2, 3], [4, 5]]) c a*b # 等价于torch.mul(a,b) # tensor([[ 2, 6], # [12, 20]]) a * torch.tenso…

不废话!CentOS 8 安装docker的详细过程

目录 1.更新系统 2. 安装依赖包 3.添加 Docker YUM 仓库 4.安装 Docker 5.启动 Docker 6.设置 Docker 开机自启 7.测试 Docker 1.更新系统 dnf update 这里直接输入y&#xff0c;耐心等待更新即可 直到看到complete表示更新完毕 2. 安装依赖包 Docker 需要一些依赖包才能正常…