typescript进阶语法

typescript进阶语法

interface 接口定义

c 复制代码
interface userType {
	name:string,
	age:number,
	sex?:string
}

type接口定义

c 复制代码
type userType= {
	name:string,
	age:number,
	sex?:string
}
type userType ='username'  # 固定值写法
let user:userType = 'age'  # 报错 只能等于username

pick摘取部分类型

c 复制代码
type userType= {
	name:string,
	age:number,
	sex?:string
}
type myType=Pick<userType,'name'|'age'>
let my:myTyp={
	name:'张三',
	age:18
}

omit 剔除属性

c 复制代码
type userType= {
	name:string,
	age:number,
	sex:string
}
type myType=Pink<userType,'name'|'age'>
let my:myTyp={
	sex:'男'  # 加上其他属性就会报错,因为属性被剔除
}

Exclude 排除

c 复制代码
type a = 'a'|'b'|'c'
type b = 'b'|'c'
type Atype=Exclude<a,b> # a是否继承b 是 nerve 否 a,简单说a的类型b中是否有,有的话就是nerve空,否则就是a类型 相当于剔除
let data:Atype='a'

Extract 选择

c 复制代码
type a = 'a'|'b'|'c'
type b = 'b'|'c'
type Atype=Exclude<a,b> # 取a跟b的交集
let data:Atype='b'
let data2:Atype='c'

总结:当我们知道一组类型中需要剔除哪些属性时,就用Pink跟omit,当我们已知两组类型,但又不知道剔除哪些类型的时候就用Extract ,Exclude

Partial

将所有的属性变为可选属性

相关推荐
Hncj20222 小时前
项目02--JsonRpc
linux·c++·ubuntu·rpc
叮咚侠4 小时前
Ubuntu 24.04.3 LTS系统中Elasticsearch 8.14.0+kibana 8.14.0集群部署搭建
大数据·ubuntu·elasticsearch·搜索引擎·集群·kibana
cypking5 小时前
解决 TypeScript 找不到静态资源模块及类型声明问题
前端·javascript·typescript
风静雪冷5 小时前
在Ubuntu上安装docker(docker engine)和docker compose
linux·ubuntu·docker
半壶清水5 小时前
ubuntu中mysql升级指南
mysql·ubuntu·adb
Lupino6 小时前
Ubuntu 远程桌面 (XRDP + XFCE) 配置与故障排除指南
ubuntu
老兵发新帖7 小时前
ubuntu Nano常用指令
linux·运维·ubuntu
培之7 小时前
联想拯救者windows11装ubuntu双系统要点
linux·运维·ubuntu
开发者小天8 小时前
React中useCallback的使用
前端·javascript·react.js·typescript·前端框架·css3·html5
snow@li8 小时前
小程序-uniapp:vue3-typescript项目使用mp-html实现展示富文本
javascript·typescript·uni-app