工具类型

Partial

Partial的用处如以下举例:当接口中的属性在有些情况下是可选参数的,有些情况下是必选参数。Partial拿出部分属性的属性,作用把泛型的类型(<>尖括号的接口类型)属性设置属性为可选参数。

js 复制代码
// 定义两个接口满足以上要求
interface Pt1{
    name:string;
    age:number;
}
interface Pt2{
    name?:string;
    age?:number;
}
js 复制代码
//采用Partial,只需要定义一个接口
interface People {
  name:string;
  age:number;
}
// 泛型放入接口的类型
let peopleObj:Partial<People>={
  name:"jessica",
  age:418
}
let people:Partial<People>={
  name:"hyo",
}
let people2:Partial<People>={
  name:Gloria,
  age:undefined
}

type Partial<T> = { [P in keyof T]?: T[P] | undefined; }这段代码的含义为T这个泛型在使用时就是传入的接口的类型,将来这个类型依然是一个对象。P in keyof T就是遍历接口中的属性,P相当于一个临时变量用于保存遍历出的接口属性nameageT[P]表示取出接口中属性的属性值就是stringnumber。即这段代码最终呈现结果为一个对象:

js 复制代码
// 问号表示可选属性
{
    name?:string|undefined,
    age?:number|undefined
}

Required

Required的用处如以下举例:当接口中的属性有可选参数,但有些情况下需要这个可选参数是必选参数。Required的作用是把泛型的类型(<>尖括号的接口类型)属性设置属性为必选参数。

js 复制代码
interface People {
  name:string;
  age:number;
  height?:number
}
// 泛型放入接口的类型
let peopleObj:Required<People>={
    // 编译报错
  name:"jessica",
  age:418
}

type Required<T> = { [P in keyof T]-?: T[P]; }这段代码的含义为T这个泛型在使用时就是传入的接口的类型,将来这个类型依然是一个对象。P in keyof T就是遍历接口中的属性,P相当于一个临时变量用于保存遍历出的接口属性nameageheightT[P]表示取出接口中属性的属性值就是stringnumbernumber-?表示抵消去掉问号,有问号就减去问号,没有就不需要减去。即这段代码最终呈现结果为一个对象:

js 复制代码
// 问号表示可选属性
{
    name:string|undefined,
    age:number|undefined,
    height:number|undefined,
}
相关推荐
郭老二5 小时前
【前端】vue3:编译步骤
前端
不在逃避q6 小时前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁6 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One9856 小时前
高进度算法模板速记(待完善)
java·前端·算法
陈随易6 小时前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
新中地GIS开发老师7 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
用户059540174467 小时前
大模型对话记忆持久化踩坑实录:用 Playwright 自动化测了 300 次,终于揪出会话丢失的真凶
前端·css
丙氨酸長鏈7 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen8 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒9 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端