typescript进阶语法
interface 接口定义
interface userType {
name:string,
age:number,
sex?:string
}
type接口定义
type userType= {
name:string,
age:number,
sex?:string
}
type userType ='username' # 固定值写法
let user:userType = 'age' # 报错 只能等于username
pick摘取部分类型
type userType= {
name:string,
age:number,
sex?:string
}
type myType=Pick<userType,'name'|'age'>
let my:myTyp={
name:'张三',
age:18
}
omit 剔除属性
type userType= {
name:string,
age:number,
sex:string
}
type myType=Pink<userType,'name'|'age'>
let my:myTyp={
sex:'男' # 加上其他属性就会报错,因为属性被剔除
}
Exclude 排除
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 选择
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
将所有的属性变为可选属性