工具类型

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,
}
相关推荐
谙忆102410 分钟前
前端图片直传对象存储:OSS/S3 预签名 URL、STS 临时凭证与回调校验
前端
CHNE_TAO_EMSM1 小时前
Android studio 打开文件时自动下载源码
前端·javascript·android studio
一孤程2 小时前
Airtest自动化测试第五篇:小程序与Web测试——跨平台自动化全覆盖
前端·自动化测试·小程序·自动化·测试·airtest
IT_陈寒2 小时前
SpringBoot自动配置不是你以为的那样的智能
前端·人工智能·后端
yume_sibai3 小时前
大屏数据可视化 - 边框红绿呼吸灯实现详解
前端·信息可视化·typescript
Hyyy3 小时前
很多Desktop都在上的Computer Use是什么
前端·llm
慢功夫4 小时前
开篇:VS Code 为什么不是一个普通 React App
前端·visual studio code
你挚爱的强哥4 小时前
Vue2 实现 1.5s 十连击监听(连续点击若干次),封装通用可复用点击检测工具,不用 data!Vue 封装通用连击监听方法,支持自定义时长与点击次数
前端·javascript·vue.js
huashengzsj4 小时前
Shopify个人建站如何搭建独立站:从零开始的完整指南
前端·网络·人工智能
程序猿小泓5 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习